Самый простой способ скопировать разработку SQL Server на флэш-накопитель - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть небольшая база данных SQL, которая есть только на моем ПК для разработки.Я хотел бы делать частые резервные копии этого на флэш-накопитель.Если бы я мог сделать это автоматически по расписанию при обнаружении флешки, это было бы еще лучше.Какой хороший способ сделать это?

Ответы [ 3 ]

2 голосов
/ 09 ноября 2011

Это то, что я сделал, чтобы база данных и другие папки автоматически синхронизировались с моим USB-накопителем при каждом подключении:

  1. Установка SyncToy производства Microsoft.
    • Добавьте пару папок для копирования из папки БД на USB-накопитель.
    • Фильтровать файлы только на те файлы, которые вы хотите скопировать.
  2. Создайте пакетную программу с содержимым ниже под названием SyncMe.bat и сохраните ее на USB-накопителе
  3. Открыть программу просмотра событий из панели управления.
  4. Перейдите в Журналы приложений и служб> Microsoft> Windows DriverFrameworks-UserMode> Операционный
  5. Очистите журнал, чтобы упростить поиск нужных событий.
  6. Подключите USB-накопитель.
  7. Обновите журнал, найдите последнее событие, относящееся к этому USB-накопителю, щелкните правой кнопкой мыши и прикрепите задачу к этому событию.
  8. Добавить действие, которое запускает созданную вами программу SyncMe.bat

Содержимое SyncMe.bat (обновите, чтобы отразить ваши пути и имена файлов):

@echo off

if exist "G:\SyncMe.bat" goto fileexists

goto nofile

:fileexists
"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\OSQL.EXE" -S computername\instancename -E -n -Q "master..sp_detach_db 'DatabaseName'"
"C:\Program Files\SyncToy 2.1\SyncToyCmd.exe" -R
"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\OSQL.EXE" -S computername\instancename -E -n -Q "master..sp_attach_db 'DatabaseName', 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.InstanceName\MSSQL\DATA\DatabaseName.mdf','C:\Program Files\Microsoft SQL Server\MSSQL10_50.InstanceName\MSSQL\DATA\LogName_log.ldf'"
goto end

:nofile
echo SyncMe.bat not found on G:\
goto end

:end
1 голос
/ 09 ноября 2011

Я не думаю, что вы можете заставить SQL Server сделать все это за вас. В итоге я бы написал небольшое консольное приложение, которое использовало SMO , чтобы сделать работу за меня:

Server sqlServer = new Server(@"MYMACHINE\INSTANCENAME");
sqlServer.DetachDatabase("MyDatabaseName", false);

// copy the mdf and ldf to your thumb drive

StringCollection databaseFiles = new StringCollection();
databaseFiles.Add(@"C:\MyDBLoc\MyDatabase.mdf");
databaseFiles.Add(@"C:\MyDBLoc\MyDatabase.ldf");
sqlServer.AttachDatabase("MyDatabaseName", databaseFiles);
1 голос
/ 09 ноября 2011

Что вы можете сделать, это скопировать файлы .mdf и .ldf. Если вы не изменили какие-либо настройки, вы сможете найти их здесь:

C: \ Program Files \ Microsoft SQL Server\ MSSQL10.SQLEXPRESS \ MSSQL \ DATA

Не думаю, что вы можете сделать это во время работы сервера, но вы можете легко отсоединить БД от Management Studio (щелкнуть правой кнопкой мыши базу данных .. задач .. отсоединить).Затем вы можете точно скопировать файлы, сначала отархивировав их, что должно иметь большое значение в размерах и их простую версию.

С другой стороны, в студии управления вы можете выбрать узел баз данных и richtclick .. присоединить базу данных, чтобы присоединить их снова.

Эта кажется хорошей статьей по этому вопросу.

С уважением, Герт-Ян

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...