Копирование баз данных на другие серверы
В некоторых случаях можно скопировать базу данных с одного компьютера на другой и использовать ее для тестирования, проверки согласованности данных, разработки ПО, выполнения отчетов, создания зеркальной базы данных или предоставления доступа к базе данных сотрудникам удаленного филиала.
Скопировать базу данных можно одним из следующих способов.
Использование мастера копирования баз данных
Мастер копирования баз данных можно использовать для копирования или перемещения баз данных между серверами, а также для обновления базы данных SQL Server до более новой версии. Дополнительные сведения см. в статье Use the Copy Database Wizard.
Восстановление базы данных из резервной копии
Чтобы копировать целую базу данных, можно использовать инструкции BACKUP и RESTORE языка Transact-SQL . Выбор методики восстановления базы данных из полной резервной копии для копирования базы данных с одного компьютера на другой может быть мотивирован разными причинами. Сведения о копировании базы данных путем восстановления из резервной копии см. в статье Копирование баз данных путем создания и восстановления резервных копий.
Чтобы настроить зеркальную базу данных для зеркального отображения базы данных, необходимо восстановить базу данных на зеркальном сервере с помощью инструкции RESTORE DATABASE <имя_базы_данных> WITH NORECOVERY. Дополнительные сведения см. в статье Prepare a Mirror Database for Mirroring (SQL Server).
Использование мастера создания скриптов для публикации баз данных
Мастер создания скриптов позволяет передать базу данных с локального компьютера на веб-поставщик услуг размещения. Дополнительные сведения см. в статье Мастер формирования и публикации скриптов.
Перенос всех баз данных MS SQL Server на другую машину
Недавно возникла необходимость переноса всех БД (>50 на одном экземпляре SQL Server) из dev-окружения на другой экземпляр SQL Server, который располагался на другом железе. Хотелось минимизировать ручной труд и сделать всё как можно быстрее.
Disclaimer
Скрипты написаны для одной конкретной ситуации: это dev-окружение, все базы в простой модели восстановления, файлы данных и журналы транзакций лежат в одной куче.
Всё, что написано дальше относится только к этой ситуации, но вы можете без особых усилий допилить их под себя (свои условия).
В скриптах не используются новомодные STRING_AGG и прочие приятные штуки, поэтому работать всё должно начиная с SQL Server 2008 (или 2008 R2, не помню где появилось сжатие бэкапов). Для более старых версий нужно убрать WITH COMPRESSION из команды бэкапа, но тогда разницы по времени с копированием файлов может уже и не быть.
Это не инструкция — «как надо» делать такой перенос. Это демонстрация того, как можно использовать метаданные в dynamic SQL.
Конечно, самым быстрым способом было бы просто переподключить полку с дисками к новому серверу, но это был не наш вариант. Detach — копирование — Attach рассматривался, но не подошёл, поскольку канал был довольно узким и перенос БД в несжатом виде занял бы довольно большой промежуток времени.
В итоге, решили, что будем делать бэкап с компрессией на шару на новом сервере, а там уже восстанавливать. Железо и на старой, и на новой локации неплохое, бэкап жмётся неплохо, выигрыш по времени тоже неплохой.
Так был написан «генератор скриптов»:
На выходе получаем готовые команды для создания бэкапов в нужное место, перевода БД в offline, чтобы их пользователи не могли с ними работать на старом сервере и скрипты для восстановления полученных бэкапов на новом сервере (с автоматическим перемещением всех файлов данных и журналов транзакций в указанное место).
Проблема с этим такая — либо кто-то должен сидеть и по очереди выполнять все скрипты (бэкап-офлайн-восстановление), либо кто-то должен сначала запустить все бэкапы, потом отключить все базы, потом всё восстановить — действий меньше, но нужно сидеть и отслеживать.
Хотелось автоматизировать все эти операции. С одной стороны, всё просто — уже есть готовые команды, заворачивай в курсор и выполняй. И, в принципе, я так и сделал, добавил новый сервер как linked server на старом и запустил. На локальном сервере команда выполнялась через EXECUTE (@sql_text);, на linked server — EXECUTE (@sql_text) AT [linkedServerName].
Таким образом, последовательно выполнялись операции — бэкап локально, перевод локальной БД в офлайн, восстановление на Linked server. Всё завелось, ура, но мне показалось, что можно немного ускорить процесс, если бэкапы и восстановления выполнять независимо друг от друга.
Тогда придуманный курсор был разделён на две части — на старом сервере в курсоре каждая база бэкапится и переводится в офлайн, после чего второй сервер-таки должен понять, что появилось новое задание и выполнить восстановление БД. Для реализации этого механизма я использовал запись в таблицу на linked server и бесконечный цикл (мне было лень придумывать критерий остановки), который смотрит не появилось ли новых записей и пытается восстановить что-нибудь, если появились.
Решение
На старом сервере создаётся и заполняется глобальная временная таблица ##CommandList, в которой собираются все команды и там же можно будет отслеживать статус выполнения бэкапов. Таблица глобальная, чтобы в любой момент из другой сессии можно было посмотреть — что там сейчас происходит.
Посмотрим что там оказалось (SELECT * FROM ##CommandList):

Отлично, там собираются все команды для бэкапа/восстановления всех нужных БД.
На новом сервере была создана БД Maintenance и в ней таблица CommandList, которая будет содержать в себе информацию о восстановлении баз:
На старом сервере был настроен linked server, смотрящий на новый экземпляр SQL Server. Скрипты, которые приведены в этом посте, я писал дома и не заморачивался с новым экземпляром, использовал один и его же подключил как linked server сам к себе. Поэтому тут у меня и пути одинаковые и unc-path локальный.
Теперь можно объявлять курсор, в котором бэкапить базы, отключать их и писать на linked server команду для восстановления:
Каждое действие «логируется» на вкладке Messages в SSMS — там можно наблюдать за текущим действием. Если использовать WITH LOG в RAISERROR, в принципе, можно засунуть это всё в какой-нибудь job и потом смотреть логи.
Во время выполнения курсора можно обращаться к ##CommandList и смотреть в табличном виде что и как происходит.
На новом сервере, параллельно, крутился бесконечный цикл:
Всё что он делает — смотрит в таблицу CommandList, если там есть хотя бы одна необработанная запись — берёт имя БД и команду для восстановления и пытается выполнить с помощью EXEC (@sql_text);. Если записей нет, ждёт 30 секунд и пробует снова.
И курсор, и цикл обрабатывают каждую запись только один раз. Не получилось? Пишем сообщение об ошибке в таблицу и больше сюда не возвращаемся.
Про условие остановки — мне на самом деле было лень. Пока набирал текст, придумал минимум три решения — как вариант — добавление флагов «Готов к восстановлению \ Не готов к восстановлению \ Завершён», заполнение списка БД и команд сразу, при заполнении ##CommandList на старом сервере и обновление флага внутри курсора. Останавливаемся, когда не осталось «готовых к восстановлению» записей, так как нам сразу известен весь объём работ.
Выводы
А нет никаких выводов. Подумал, что кому-то может быть полезно/интересно посмотреть как использовать метаданные для формирования и выполнения dynamic sql. Приведённые в посте скрипты в том виде, как есть, мало пригодны для использования на проде, однако, их можно немного допилить под себя и использовать, например, для массовой настройки log shipping / database mirroring / availability groups.
При выполнении бэкапа на шару, у учётной записи, под которой запущен SQL Server, должны быть права для записи туда.
В посте не раскрыто создание Linked Server’a (мышкой в GUI интуитивно настраивается за пару минут) и перенос логинов на новый сервер. Те, кто сталкивался с переносом пользователей знают, что простое пересоздание sql-логинов не очень помогает, поскольку у них есть sid’ы, с которыми и связаны пользователи БД. Скрипты для генерации sql-логинов с текущими паролями и корректными sid’ами есть на msdn.
Использование мастера копирования базы данных
Мастер копирования баз данных легко перемещает или копирует базы данных и определенные объекты сервера из одного экземпляра SQL Server в другой, без простоя сервера. С помощью этого мастера можно сделать следующее.
Выбрать исходный и целевой серверы.
Выбрать базы данных для перемещения или копирования.
Указать расположение файлов для этих баз данных.
Скопировать имена входа для целевого сервера.
Копировать дополнительные вспомогательные объекты, задания, пользовательские хранимые процедуры и сообщения об ошибках.
Задать расписание перемещения или копирования баз данных.
Планируете миграцию на Azure SQL? Вместо мастера копирования баз данных изучите следующие средства:
ограничения
Мастер копирования баз данных недоступен в выпуске Express.
Мастер копирования базы данных нельзя использовать для перемещения или копирования следующих типов баз данных:
системные базы данных ( master , model , msdb , tempdb );
базы данных, отмеченные для репликации;
базы данных в следующих состояниях: недоступные, в процессе загрузки, в режиме вне сети, в процессе восстановления, подозрительные или в аварийном режиме;
базы данных, содержащие данные и файлы журналов в хранилище Microsoft Azure.
При использовании FileTables нельзя применять мастер копирования базы данных на том же сервере, так как он использует одно и то же имя каталога.
Базы данных нельзя копировать и перемещать в более ранние версии SQL Server.
Если выбран параметр Переместить , после перемещения базы данных мастер автоматически удаляет базу данных-источник. При выборе параметра Копирование мастер копирования базы данных не выполняет удаление базы данных-источника. Кроме того, объекты выбранного сервера копируются, а не перемещаются в место назначения; фактически единственным перемещаемым объектом является база данных.
При использовании метода управляющих объектов SQL Server для перемещения полнотекстового каталога после перемещения необходимо заново заполнить индекс.
Метод отсоединения и присоединения отсоединяет базу данных, перемещает или копирует ее файлы (MDF, NDF и LDF) и подсоединяет базу данных в новом расположении. При использовании метода отсоединения и присоединения во избежание потери или рассогласования данных к копируемой или перемещаемой базе данных нельзя присоединять активные сеансы. Если используется метод управляющих объектов SQL Server , активные сеансы допустимы, так как база данных не переводится в режим «вне сети».
Передача заданий агента SQL Server, который ссылается на базы данных, еще не существующие на целевом сервере, приведет к сбою всей операции. Прежде чем создавать базу данных, мастер пытается создать задание агента SQL Server. Обходное решение.
На сервере назначения создайте базу данных оболочки с таким же именем, как у копируемой или перемещаемой базы данных. См. раздел Создание базы данных.
На странице Конфигурация базы данных назначения выберите пункт Удалить на целевом сервере любую базу данных с тем же именем, затем продолжить передачу базы данных, перезаписывая существующие файлы базы данных.
При применении метода отсоединения и присоединения в качестве владельца базы данных будет задан пользователь, который запустил мастер копирования базы данных. Инструкции по изменению владельца базы данных см. в статье ALTER AUTHORIZATION (Transact-SQL) .
Предварительные требования
На сервере назначения должен быть запущен агент SQL Server.
Убедитесь, что каталоги файлов данных и файлов журналов на исходном сервере можно получить с целевого сервера.
При использовании метода отсоединения и присоединения на целевом сервере должна присутствовать учетная запись-посредник агента SQL Server для подсистемы SQL Server Integration Services (SSIS), позволяющая получать доступ к файловой системе исходного и целевого серверов. Дополнительные сведения о прокси-серверах см. в статье Создание учетной записи-посредника агента SQL Server.
Если при применении метода отсоединения и присоединения не используется учетная запись-посредник служб Integration Services, процесс копирования или перемещения завершится ошибкой. В некоторых ситуациях база данных-источник не подключается к исходному серверу повторно, а все разрешения безопасности NTFS из файлов данных и файлов журналов вырезаются. Если это произошло, найдите свои файлы, примените к ним соответствующие разрешения и заново подключите базу данных к своему экземпляру SQL Server.
Рекомендации
Для обеспечения оптимальной производительности обновленной базы данных выполните процедуру sp_updatestats (Transact-SQL) (обновление статистики) для обновленной базы данных.
Если база данных перемещается или копируется с одного экземпляра сервера на другой, для обеспечения однородности среды для пользователей и приложений может потребоваться повторное создание некоторых (или даже всех) метаданных базы данных: имен входа, заданий и т. д. Дополнительные сведения см. в статье Управление метаданными при обеспечении доступности базы данных на другом экземпляре сервера (SQL Server).
Разрешения
Вы должны быть членом предопределенной роли сервера sysadmin как на исходном, так и на целевом сервере.
Мастер копирования баз данных
На исходном или целевом экземпляре SQL Server запустите мастер копирования баз данных в среде SQL Server Management Studio из обозревателя объектов и разверните узел Базы данных. Щелкните базу данных правой кнопкой мыши, наведите указатель мыши на пункт Задачи и выберите команду Копировать базу данных. Если откроется всплывающая страница Добро пожаловать в мастер копирования баз данных, нажмите Далее.
Выбор исходного сервера
На этой странице можно указать сервер с базой данных, которую нужно переместить или копировать, а также ввести учетные данные. После выбора метода проверки подлинности и введения сведений для входа нажмите Далее, чтобы установить соединения с исходным сервером. Это соединение остается открытым в течение всего сеанса.
Исходный сервер
Позволяет указать имя сервера, где находится база данных, которую нужно переместить или скопировать. Введите имя сервера вручную или нажмите многоточие и выберите нужный сервер. Версия сервера должна быть не ниже SQL Server 2005.
Использовать проверку подлинности Windows
Для подключения можно использовать учетную запись Microsoft Windows.
Использовать проверку подлинности SQL Server
Позволяет установить подключение, указав имя пользователя и пароль для проверки подлинности SQL Server.
User name
Позволяет ввести имя пользователя для соединения. Этот параметр доступен только при выборе проверки подлинности SQL Server.
Пароль
Позволяет ввести пароль для указанного имени входа. Этот параметр доступен только при выборе проверки подлинности SQL Server.
Выбор целевого сервера
Позволяет указать сервер, на который будет перемещена или скопирована база данных. Если в качестве исходного и целевого сервера выбрать один и тот же экземпляр сервера, будет создана копия базы данных. В этом случае необходимо задать другое имя для целевой базы данных позднее в мастере. Имя базы данных-источника может быть использовано в качестве имени скопированной или перемещенной базы данных только в том случае, если на целевом сервере не возникает конфликтов имен. Если конфликты имен существуют, их необходимо разрешить вручную на целевом сервере, прежде чем там можно будет использовать имя базы данных-источника.
Целевой сервер
Позволяет указать имя сервера, на который нужно переместить или скопировать базу данных. Введите имя целевого сервера вручную или нажмите многоточие и выберите нужный сервер. Версия сервера должна быть не ниже SQL Server 2005.
В качестве целевого можно использовать кластеризованный сервер, при этом мастер копирования базы данных должен убедиться, что на кластеризованном целевом сервере выбраны только совместно используемые диски.
Использовать проверку подлинности Windows
Для подключения можно использовать учетную запись Microsoft Windows.
Использовать проверку подлинности SQL Server
Позволяет установить подключение, указав имя пользователя и пароль для проверки подлинности SQL Server.
User name
Позволяет ввести имя пользователя для соединения. Этот параметр доступен только при выборе проверки подлинности SQL Server.
Пароль
Позволяет ввести пароль для указанного имени входа. Этот параметр доступен только при выборе проверки подлинности SQL Server.
Выбор метода передачи
Выберите метод отсоединения и присоединения либо метод объектов управления SQL.
Использовать метод отсоединения и присоединения
Отключите базу данных от сервера-источника, скопируйте файлы базы данных (MDF-, NDF- и LDF-файлы) на целевой сервер и подключите базу данных на целевом сервере. Обычно это самый быстрый метод, так как основной выполняемой работой является считывание данных с диска источника и запись на целевой диск. Для создания объектов в базе данных или структур хранилищ данных не требуется логика SQL Server . Однако этот метод может быть более медленным, если база данных содержит большой объем выделенного, но неиспользуемого пространства. Если экземпляр содержит новую и практически пустую базу данных, под которую при создании было выделено 100 МБ, все эти 100 МБ будут скопированы, даже если заполнено всего 5 МБ.
Во время передачи данных этим методом база данных недоступна пользователям.
В случае ошибки восстановить подключение базы данных-источника. При копировании базы данных файлы исходной базы данных всегда повторно присоединяются к исходному серверу. Установите этот флажок, чтобы заново присоединить исходные файлы к базе данных-источнику, если перемещение базы данных не может быть выполнено.
Использовать метод объектов SMO
Этот метод выполняет чтение определения каждого объекта базы данных-источника и создание каждого из этих объектов в целевой базе данных. После этого происходит перенос данных из исходных таблиц в целевые таблицы с воссозданием индексов и метаданных.
Во время переноса пользователи базы данных могут продолжать обращаться к ней.
Выбор базы данных
Позволяет выбрать одну или несколько баз данных, которые нужно переместить или скопировать с исходного сервера на целевой. См. раздел Ограничения.
Перемещение
Переместить базы данных на целевой сервер.
Копировать
Копировать базы данных на целевой сервер.
Source
Показывает базы данных, присутствующие на исходном сервере.
Состояние
Отображает различные сведения о базе данных-источнике.
Обновить
Обновить список баз данных.
Конфигурация базы данных назначения
Позволяет изменить имя базы данных и задать размещение и имена файлов базы данных. Эта страница отображается один раз для каждой перемещаемой или копируемой базы данных.
База данных-источник
Определяет имя исходной базы данных. Это текстовое поле не редактируется.
Целевая база данных
Имя создаваемой целевой базы данных (при желании можно изменить).
Файлы целевой базы данных:
Имя файла
Имя файла создаваемой целевой базы данных (при желании можно изменить).
Размер (МБ)
Размер файла целевой базы данных в мегабайтах.
Целевая папка
При желании папку для размещения файла целевой базы данных на целевом сервере можно изменить.
Состояние
Состояние
Если целевая база данных уже существует:
Укажите, какие действия следует предпринять, если целевая база данных уже существует.
Прекратить передачу, если в месте назначения существует база данных или файл с тем же именем
Удалить на целевом сервере любую базу данных с тем же именем, затем продолжить передачу базы данных, перезаписывая существующие файлы базы данных.
Выбор объектов сервера
Эта страница доступна только в том случае, когда в качестве исходного и целевого серверов используются разные сервера.
Доступные связанные объекты
Список объектов, доступных для передачи на целевой сервер. Чтобы включить объект, выберите имя объекта в поле Доступные связанные объекты, затем нажмите кнопку >> для перемещения объекта в поле Выбранные связанные объекты.
Выбранные связанные объекты
Список объектов, которые будут переданы на целевой сервер. Чтобы исключить объект, выберите имя объекта в поле Выбранные связанные объекты, затем нажмите кнопку << для перемещения объекта в поле Доступные связанные объекты. По умолчанию переносятся все объекты всех выбранных типов. Для выбора отдельных объектов любого типа нажмите кнопку с многоточием рядом с любым типом объекта в поле Выбранные связанные объекты. Откроется диалоговое окно, в котором можно будет выбрать отдельные объекты.
Список объектов сервера
Имена входа (выбрано по умолчанию)
задания агента SQL Server
Определяемые пользователем сообщения об ошибках
Пакет служб SSIS
Хранимые процедуры из базы данных master
Расширенные хранимые процедуры и связанные с ними DLL-файлы недоступны для автоматического копирования.
Расположение файлов исходной базы данных
Эта страница доступна только в том случае, когда в качестве исходного и целевого серверов используются разные сервера. Укажите общую папку в файловой системе, содержащую файлы базы данных на исходном сервере.
База данных
Отображает имя каждой перемещаемой базы данных.
Местонахождение папки
Укажите расположение файлов базы данных на исходном сервере. Например: C:\Program Files\Microsoft SQL Server\MSSQL110.MSSQLSERVER\MSSQL\DATA .
Общая папка на исходном сервере
Укажите общую папку с файлами базы данных на исходном сервере. Введите имя общей папки вручную или нажмите многоточие и выберите нужную папку. Например: \\server_name\C$\Program Files\Microsoft SQL Server\MSSQL110.MSSQLSERVER\MSSQL\Data .
Настройка пакета
Мастер копирования баз данных создает пакет служб SSIS для переноса базы данных.
Размещение пакета
Указывает, куда будет записан пакет служб SSIS.
Имя пакета
Имя по умолчанию для создаваемого пакета служб SSIS (при желании можно изменить).
Параметры ведения журнала
Выберите сохранение сведений либо в журнал событий Windows, либо в текстовый файл.
Путь к журналу ошибок
Этот параметр доступен только в том случае, если выбрано сохранение журнала в текстовый файл. Укажите путь размещения файла журнала.
Расписание пакета
Позволяет указать, когда должна начаться операция перемещения или копирования. Если вы не являетесь системным администратором, необходимо указать учетную запись-посредник агента SQL Server, имеющую доступ к подсистеме выполнения пакетов служб Integration Services (SSIS).
При применении метода отсоединения и присоединения необходимо использовать учетную запись-посредник служб SSIS.
Run immediately
После завершения работы мастера будет выполнен пакет служб SSIS.
Расписание
Пакет служб SSIS будет выполнен по расписанию.
- Изменение расписания
Открывает диалоговое окно Создание расписания задания . Настройте расписание желаемым образом. Выберите ОК после завершения.
Учетная запись-посредник служб SSIS . Выберите в раскрывающемся списке учетную запись-посредник. Чтобы задать расписание перемещения, пользователь должен иметь по крайней мере одну учетную запись-посредник, настроенную с разрешением доступа к подсистеме Выполнение пакетов служб SSIS.
Чтобы создать учетную запись-посредник для выполнения пакетов служб SSIS, в обозревателе объектов разверните узел Агент SQL Server, а затем Учетная запись-посредник, щелкните правой кнопкой мыши пункт Выполнение пакетов служб SSIS и выберите команду Создать учетную запись-посредник.
Завершение работы мастера
Отображает сводку выбранных параметров. Нажмите Назад для изменения параметров. Чтобы создать пакет SSIS, нажмите Готово. На странице Выполнение операции отображаются данные о состоянии выполнения операций, заданных в мастере копирования баз данных.
Действие
Отображает список всех выполняемых действий.
Состояние
Указывает, выполнено действие успешно или нет.
Message
Предоставляет все сообщения, возвращаемые в каждом шаге.
Примеры
Общие шаги
Перечисленные ниже пять шагов выполняются независимо от того, какое выбрано действие — Перемещение , Копирование, Присоединение и отсоединение и SMO. Для краткости эти шаги перечислены однократно, а приводить примеры мы начнем с шага 6.
В обозревателе объектовподключитесь к экземпляру компонента SQL Server Database Engine и разверните его.
Разверните узел Базы данных, щелкните правой кнопкой мыши нужную базу данных, укажите пункт Задачи и выберите команду Копировать базу данных…
Если откроется всплывающая страница Добро пожаловать в мастер копирования баз данных, нажмите Далее.
На страницеВыбор исходного сервера укажите сервер с базой данных, которую нужно переместить или скопировать. Выберите метод проверки подлинности. Если выбран параметр Проверка подлинности SQL Server , необходимо ввести учетные данные. Нажмите Далее, чтобы подключиться к исходному серверу. Это соединение остается открытым в течение всего сеанса.
Выберите страницу целевого сервера : укажите сервер, на который будет перемещена или скопирована база данных. Выберите метод проверки подлинности. Если выбран параметр Проверка подлинности SQL Server , необходимо ввести учетные данные. Нажмите Далее, чтобы подключиться к исходному серверу. Это соединение остается открытым в течение всего сеанса.
Мастер копирования базы данных можно запустить из любой базы данных. Мастер можно использовать как на исходном, так и на целевом сервере.
A. Перемещение базы данных в экземпляр на другом физическом сервере с использованием метода отсоединения и присоединения. Также перемещаются имя входа и задание агента SQL Server.
В следующем примере база данных Sales , имя входа Windows contoso\Jennie и задание агента SQL Server Jennie’s Report переносятся из экземпляра SQL Server 2008 на сервера Server1 в экземпляр SQL Server 2016 на сервере Server2 . Jennie’s Report использует базу данных Sales . Sales еще не существует на целевом сервере Server2 . Server1 после перемещения базы данных будет назначен другой команде.
Как было указано выше в разделе Ограничения, при переносе задания агента SQL Server, который ссылается на базу данных, не существующую на целевом сервере, необходимо создать на целевом сервере базу данных оболочки. Создайте на целевом сервере базу данных оболочки с именем Sales .
Вернитесь к мастеру, выберите страницу метода передачи : просмотрите и сохраните значения по умолчанию. Выберите Далее.
СтраницаВыбор баз данных . Установите флажок Переместить напротив соответствующей базы данных Sales . Выберите Далее.
Настройка страницы целевой базы данных: мастер определил, что Sales уже существует на целевом сервере, как было создано на шаге 6 выше, и добавился _new к имени целевой базы данных. Удалите _new в текстовом поле Целевая база данных . При необходимости измените значения полей Имя файлаи Целевая папка. Установите переключатель Удалить на целевом сервере любую базу данных с тем же именем, затем продолжить передачу базы данных, перезаписывая существующие файлы базы данных. Выберите Далее.
СтраницаВыбор объектов сервера. В области Выбранные связанные объекты нажмите кнопку с многоточием в поле Имя объекта > Имена входа. В разделе Параметры копирования установите флажок Копировать только выбранные имена входа:. Установите флажок Показать все имена входа для сервера. Установите флажок Имя входа напротив contoso\Jennie . Щелкните ОК. В области Доступные связанные объекты установите флажок Задания агента SQL Server и нажмите кнопку > . В области Выбранные связанные объекты нажмите кнопку с многоточием в поле Задания агента SQL Server. В разделе Параметры копирования установите флажок Копировать только выбранные задания. Установите флажок напротив Jennie’s Report . Щелкните ОК. Выберите Далее.
Расположение страницы «Файлы исходной базы данных«: нажмите кнопку с многоточием для общей папки на исходном сервере и перейдите к расположению указанной папки. Например, если папка находится по адресу D:\MSSQL13.MSSQLSERVER\MSSQL\DATA , укажите \\Server1\D$\MSSQL13.MSSQLSERVER\MSSQL\DATA в поле Общая папка на исходном сервере. Выберите Далее.
Настройка страницы «Пакет«: в поле «Имя пакета» введите SalesFromServer1toServer2_Move . Установите флажок Сохранить журнал передачи? . В раскрывающемся списке Параметры ведения журнала выберите пункт Текстовый файл. Проверьте и при желании измените значение поля Путь к файлу журнала ошибок. Выберите Далее.
Путь к файлу журнала ошибок — это путь к папке на целевом сервере.
Запланируйте страницу пакета : выберите соответствующий прокси-сервер в раскрывающемся списке учетной записи прокси служб Integration Services . Выберите Далее.
Завершите страницу мастера : просмотрите сводку выбранных параметров. Нажмите Назад для изменения параметров. Нажмите Готово, чтобы выполнить задачу. Во время передачи на странице Выполнение операции отображаются данные о состоянии выполнения операций, заданных в мастере.
Страница Выполняется операция. После успешного выполнения операции нажмите Закрыть. Если операция завершится неудачно, вы можете просмотреть журнал ошибок и нажать кнопку Назад для последующего анализа. В противном случае выберите Закрыть.
Действия после перемещения . На новом узле Server2 можно выполнить следующие инструкции T-SQL:
Действия после перемещения: очистка
Поскольку Server1 перемещается в другую команду, а операция Перемещение повторяться не будет, можно выполнить следующие шаги:
- Удаление пакета служб SSIS SalesFromServer1toServer2_Move на сервере Server2 .
- Удаление задания агента SQL Server SalesFromServer1toServer2_Move на сервере Server2 .
- Удаление задания агента SQL Server Jennie’s Report на сервере Server1 .
- Удаление имени входа contoso\Jennie на сервере Server1 .
Б. Копирование базы данных методом отсоединения и присоединения в тот же экземпляр и настройка повторяющегося расписания.
В этом примере база данных Sales будет скопирована и создана как база данных SalesCopy в том же экземпляре. После этого база данных SalesCopy будут создаваться заново еженедельно.
Выберите страницу «Метод передачи «: проверьте и сохраните значения по умолчанию. Выберите Далее.
СтраницаВыбор баз данных . Установите флажок Копировать напротив базы данных Sales . Выберите Далее.
СтраницаНастройка целевой базы данных . Измените имя целевой базы данных на SalesCopy . При необходимости измените значения полей Имя файлаи Целевая папка. Установите переключатель Удалить на целевом сервере любую базу данных с тем же именем, затем продолжить передачу базы данных, перезаписывая существующие файлы базы данных. Выберите Далее.
Настройка страницы «Пакет«: в текстовом поле «Имя пакета» введите SalesCopy Weekly Refresh . Установите флажок Сохранить журнал передачи? . Выберите Далее.
Запланируйте страницу «Пакет «: выберите переключатель «Расписание», а затем нажмите кнопку «Изменить расписание «.
Страница Создание расписаний заданий. В текстовом поле Имя введите «Еженедельно по воскресениям».
Щелкните ОК.
Выберите соответствующий прокси-сервер в раскрывающемся списке Учетная запись-посредник служб SSIS . Выберите Далее.
Завершите страницу мастера: просмотрите сводку выбранных параметров. Нажмите Назад для изменения параметров. Нажмите Готово, чтобы выполнить задачу. Во время создания пакета на странице Выполнение операции отображаются данные о состоянии выполнения операций, заданных в мастере.
Страница Выполняется операция. После успешного выполнения операции нажмите Закрыть. Если операция завершится неудачно, вы можете просмотреть журнал ошибок и нажать кнопку Назад для последующего анализа. В противном случае выберите Закрыть.
Запустите вновь созданное задание агента SQL Server SalesCopy weekly refresh вручную. Просмотрите журнал заданий и убедитесь, что база данных SalesCopy появилась в экземпляре.
Дальнейшие действия. После обновления базы данных
После обновления базы данных SQL Server до SQL Serverс помощью мастера копирования баз данных эта база данных сразу же становится доступной и обновляется автоматически. Если база данных содержит полнотекстовые индексы, то в процессе обновления будет произведен их импорт, сброс или перестроение в зависимости от установленного значения свойства сервера Режим обновления полнотекстового каталога . Если при обновлении выбран режим Импортировать или Перестроить, то полнотекстовые индексы во время обновления будут недоступны. В зависимости от объема индексируемых данных процесс импорта может занять несколько часов, а перестроение — в несколько (до десяти) раз больше. Обратите внимание, что если при обновлении выбран режим Импортировать, а полнотекстовый каталог недоступен, то связанные с ним полнотекстовые индексы будут перестроены. Сведения о просмотре и изменении параметра Режим обновления полнотекстового поиска см. в статье Наблюдение за полнотекстовым поиском для экземпляра сервера и управление им.
После обновления уровень совместимости базы данных останется неизменным, если только он не является в новой версии неподдерживаемым. В последнем случае обновленный уровень совместимости базы данных устанавливается как самый низкий из поддерживаемых.
Например, если подключить к экземпляру SQL Server 2019 (15.x) базу данных, имеющую уровень совместимости 90, то после обновления он будет изменен на 100, что является наименьшим поддерживаемым уровнем для SQL Server 2019 (15.x). Дополнительные сведения см. в разделе Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).
Действия после копирования или перемещения
После завершения копирования или перемещенияможно выполнить следующее действие: