В этой статье я рассмотрю один из вариантов копирования базы данных, расположенной на SQL Server — копирование через пакет служб Integration Services.
Данный механизм копирования является встроенной функцией Management Studio и предлагает 2 варианта работы: с отключением базы источника и без отключения. Разница между этими вариантами приведена ниже:
Метод | Описание |
---|---|
С отключением базы данных | Работа с базой невозможна пока выполняется копирование. При этом копия базы является точной, а сама процедура копирования происходит быстро. |
Без отключением базы данных | Возможна работа с базой в процессе копирования. Копия базы может содержать несогласованные данные, а процедура копирования происходит медленно. |
Ввиду наличия в обоих вариантах серьезных недостатков: «с отключением» — невозможна работа пользователей, а «без отключения» могут быть несогласованные данные, я считаю данный механизм копирования неподходящим для реальной жизни, тем не менее я продолжу его рассмотрение в общеобразовательных целях.
Выполнение копирования
В целом, настройка данного механизма не составит проблем. Для того чтобы выполнить копирование, необходимо зайти в Management Studio. Далее, щелкнув правой клавишей мыши на копируемой базе данных, в контекстном меню перейти «Задачи» (Tasks) → Скопировать базу данных (Copy database), после чего откроется окно помощника.
![Management Studio: Копирование базы данных](https://ausevich.ru/wp-content/uploads/2017/09/ManagementStudio_CopyDatabase.png)
Далее, помощник попросит указать сервер с которого необходимо копировать базу данных, а так же способ авторизации и реквизиты доступа на этом сервере; после чего помощник запросит аналогичную информацию о сервере-приемнике (куда будет скопирована база).
![Помощник настройки копирования базы данных. Выбор сервера-источника](https://ausevich.ru/wp-content/uploads/2017/09/CopyDatabaseWizard_SelectSourceServer.png)
![Помощник настройки копирования базы данных. Выбор сервера-приемника](https://ausevich.ru/wp-content/uploads/2017/09/CopyDatabaseWizard_SelectDestinationServer.png)
На следующем этапе мастер настройки предлагает вариант копирования: «метод отсоединения и присоединения» (use the detach and attach method) — т.е. копирование с отключением базы данных; или же использовать метод объектов SMO (use the SQL Management Object Method) — т.е. без отключения базы данных. Выше были описаны плюсы и минусы этих вариантов. Помимо этого, для варианта с отключением БД, необходимо выбрать вариант действий в случае возникновения ошибки (if a failure occurs…): если флаг установлен — подключение в БД будет восстановлено, в противном случае — нет.
![Помощник настройки копирования базы данных. Выбор варианта копирования](https://ausevich.ru/wp-content/uploads/2017/09/CopyDatabaseWizard_SelectTransferMethod.png)
Далее необходимо выбрать копируемую базу и действие с ней (копирование или перемещение). Данные флаги уже будут расставлены, поскольку мастер настройки мы вызвали из контекстного меню.
![Помощник настройки копирования базы данных. Выбор баз данных](https://ausevich.ru/wp-content/uploads/2017/09/CopyDatabaseWizard_SelectDatabases.png)
На следующем шаге помощник предлагает указать имя базы-приемника, а так же расположение файлов базы данных и журнала транзакций. Помимо этого, необходимо выбрать вариант действия когда база-приемник существует: прекратить передачу (stop the transfer) или удалить целевую базу (drop database)
Далее необходимо указать имя пакета и параметры ведения журнала, на этом этапе можно все оставить по умолчанию, после чего можно указать будет ли задание выполнено немедленно или указать расписание для задания.
![Помощник настройки копирования базы данных. Настройка пакета заданий](https://ausevich.ru/wp-content/uploads/2017/09/CopyDatabaseWizard_ConfigurePackage.png)
![Помощник настройки копирования базы данных. Установка расписания пакета заданий](https://ausevich.ru/wp-content/uploads/2017/09/CopyDatabaseWizard_SchedulePackage.png)
На последнем шаге приводится сводная информация о задании, затем, если все корректно, необходимо нажать «Готово» (Finish), после чего будет создано задание и, если было указано, немедленно выполнен созданный пакет.
![Помощник настройки копирования базы данных. Завершение настройки](https://ausevich.ru/wp-content/uploads/2017/09/CopyDatabaseWizard_Complete.png)
В результате будет создано задание в дереве «Обозревателя объектов», которое можно выполнить в любой момент времени, вызвав контекстное меню правой клавишей мыши и выбрав «Запустить задание на шаге» (Start job at step)
![Management Studio. Задание пакета IS](https://ausevich.ru/wp-content/uploads/2017/09/ManagementStudio_PackageInJobs.png)