Как лучше всего скопировать целые базы данных в MS SQL Server? - PullRequest
20 голосов
/ 17 сентября 2008

Мне нужно скопировать около 40 баз данных с одного сервера на другой. Новые базы данных должны иметь новые имена, но все те же таблицы, данные и индексы, что и в исходных базах данных. До сих пор я был:

1) создание каждой целевой базы данных
2) с помощью команды " Tasks-> Export Data " создать и заполнить таблицы для каждой базы данных отдельно
3) перестроение всех индексов для каждой базы данных с помощью сценария SQL

Всего три шага для каждой базы данных, но, держу пари, есть более простой способ. Есть ли какие-нибудь эксперты по MS SQL Server?

Ответы [ 11 ]

44 голосов
/ 17 сентября 2008

Учитывая, что вы выполняете это в нескольких базах данных - вам нужно простое решение на основе сценариев, а не решение «укажи и щелкни».

Это резервный скрипт, который я храню. Получите его работу для одного файла, а затем измените его для многих.

(on source server...)
BACKUP DATABASE Northwind
  TO DISK = 'c:\Northwind.bak'

(target server...)
RESTORE FILELISTONLY
  FROM DISK = 'c:\Northwind.bak'

(look at the device names... and determine where you want the mdf and
ldf files to go on this target server)

RESTORE DATABASE TestDB
  FROM DISK = 'c:\Northwind.bak'
  WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',
  MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'
GO
14 голосов
/ 17 сентября 2008

Может быть, самое простое - отсоединить / прикрепить. Щелкните правой кнопкой мыши в диспетчере серверов на БД, задачи -> отключить. Затем скопируйте файлы MDF / LDF на новый сервер, а затем снова подключите, щелкнув значок сервера и задачи -> присоединить. Он запросит у вас файл MDF - убедитесь, что имя и т. Д. Являются точными.

4 голосов
/ 17 сентября 2008

Уже есть лучшие ответы, но это также «пробежка», потому что это просто еще один вариант. Для низкой низкой цены вы можете обратиться к Мастеру публикации баз данных Microsoft SQL Server . Этот инструмент позволяет вам написать схему, данные или данные и схему. Плюс это можно запустить из пользовательского интерфейса или командной строки <- думаю, процесс CI. </p>

4 голосов
/ 17 сентября 2008

В порядке легкости

  • Остановить сервер / fcopy / attach, вероятно, проще всего.
  • Резервное копирование / восстановление - может быть сделано отключено довольно просто и легко
  • перенос задачи DTS - требуются разрешения на копирование файла
  • репликация - самая простая от настройки до установки

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

2 голосов
/ 30 ноября 2009

Еще один способ проверить это быстро и просто:

Простой SQL BULK Copy

http://projects.c3o.com/files/3/plugins/entry11.aspx

2 голосов
/ 17 сентября 2008

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

2 голосов
/ 17 сентября 2008

Резервное копирование -> Восстановить проще всего, если не использовать репликацию.

1 голос
/ 17 сентября 2008

Резервное копирование баз данных с помощью стандартного средства резервного копирования SQL в Enterprise Manager, затем при восстановлении на втором сервере вы можете указать имя новой базы данных.

Это лучший способ сохранить схему целиком.

0 голосов
/ 30 июня 2009
0 голосов
/ 17 сентября 2008

Redgate SQL Compare и SQL Data Compare. «Сравнительный комплект» был безусловно лучшей инвестицией, которую я когда-либо делал в компании, в которой я работал. Перемещение электронного обучающего контента было легким делом.

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