Назад | Перейти на главную страницу

Перенос баз данных Mssql из разных экземпляров на новый сервер

У меня есть 3 экземпляра Sql (2008 R2) на 3 разных серверах. Версии: (10.50.2550.0 SP1 Standard Edition (64-разрядная), 10.50.2550.0 SP1 Standard Edition (64-разрядная)). Цель - мигрировать все базы данных и логины на новый сервер мы просто покупаем с Sql server 2012.

Не знаю, как подойти, попробовал воспользоваться мастером копирования базы данных, но все не получается. Если я решу сделать резервную копию каждой базы данных и восстановить их на новых серверах, я не знаю, как перенести логины.

Как лучше всего справиться с ситуацией?

Извините за недоразумение: (Подробнее о проблеме)

  1. Количество перемещаемых баз данных: 10
  2. Ошибка, указанная во время мастера копирования базы данных:

Строка 60:

OnError, DUPFAIDS, NT AUTHORITY \ SYSTEM, DUAPPSRV1_EXAPPSVR1_DUPFAIDS_PFAIDS_Transfer Objects Task, {8F0C82BB-4C5D-4796-BE75-BAB033C59039}, {3818CD1B-9685-62B03-AFE9685-46B03-AFE9

03.12.2014 12:10:15 PM, 03.12.2014 12:10:15 PM, 0,0x, ОШИБКА: errorCode = -1073548784

description = Выполнение запроса "-------------------------------------------- ------... "со следующей ошибкой:" Неверное имя объекта 'xwd_window_disabled_objects'. ".

Возможные причины сбоя: проблемы с запросом, свойство ResultSet неправильно настроено, параметры установлены неправильно или соединение не установлено правильно. **

Есть много разных способов переноса баз данных. Чаще всего рекомендуется резервное копирование и восстановление, но если у вас более 100 баз данных, вы можете создать сценарий для отсоединения и присоединения баз данных. Я успешно использовал это для переноса очень большого количества (сотен) баз данных на новый сервер:

@ECHO ON

set controlfile=control.txt

set newipmdf=\\newserver\g$
set newipldf=\\newserver\e$
set oldserver=oldserver\Prod1
set oldmdfpath=d:\prod1
set newmdfpath=g:\data
set copymdfpath=m:\data
set newserver=newserver
set oldlogpath=e:\prod1
set newlogpath=e:\log
set copylogpath=l:\log
set movedmdfpath=%oldmdfpath%\moved
set movedldfpath=%oldlogpath%\moved

mkdir %movedmdfpath%
mkdir %movedldfpath%

net use m: %newipmdf%
net use l: %newipldf%

SETLOCAL DISABLEDELAYEDEXPANSION
FOR /F %%L IN (%controlfile%%) DO (
  SET "line=%%L"
  SETLOCAL ENABLEDELAYEDEXPANSION
  ECHO !line!
  sqlcmd -E -S!oldserver! -Q"EXEC master.dbo.sp_detach_db @dbname = N'!line!'"
  copy "!oldmdfpath!\!line!.mdf" !copymdfpath!
  copy "!oldlogpath!\!line!_log.ldf" !copylogpath!
  sqlcmd -E -S!newserver! -Q"CREATE DATABASE [!line!] ON ( FILENAME = N'!newmdfpath!\!line!.mdf' ),( FILENAME = N'!newlogpath!\!line!_log.ldf' ) FOR ATTACH"
  move "!oldmdfpath!\!line!.mdf" !movedmdfpath!
  move "!oldlogpath!\!line!_log.ldf" !movedldfpath!
  ENDLOCAL
)
ENDLOCAL

net use m: /z
net use l: /z

Что касается логинов, я не могу помочь вам с паролями, но вы сможете получить список имен пользователей с помощью:

SELECT [name], type, type_desc
  FROM [master].[sys].[server_principals]
  where is_disabled=0 and type in ('S','U')

Резервное копирование и восстановление баз данных, как предлагается. Затем запустите этот скрипт microsoft (https://support.microsoft.com/kb/918992) на старых серверах, чтобы сгенерировать сценарий для создания учетных записей на новом сервере. Поскольку у вас есть два исходных сервера, обязательно внимательно просмотрите свой сценарий, чтобы убедиться, что нет повторяющихся записей или других проблем.

Скрипт Кэтрин Вильярд для отсоединения / присоединения хорош.

Если вы хотите сделать резервную копию и восстановить, это также хороший вариант, который часто используется. Но сначала выполните логины.

Скопируйте код для sp_hexadecimal и sp_help_revlogin из эта статья Technet и использовать sp_help_revlogin для генерации операторов TSQL, которые можно использовать для копирования ваших учетных записей. Процесс такой:

  1. Запустите указанный выше код, чтобы создать хранимые процедуры (в мастере)
  2. Бегать EXEC sp_help_revlogin на вашем старом сервере
  3. Скопируйте результаты sp_help_revlogin и вставьте их в новое окно запроса, подключенное к вашему новому экземпляру SQL Server.
  4. Запустите только что вставленные операторы TSQL.

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

(ПРИМЕЧАНИЕ для будущих посетителей: если по какой-то причине ссылка не работает, просто выполните поиск sp_help_revlogin найти новую страницу).