Копировать данные SQL Server с одного сервера на другой по расписанию - PullRequest
5 голосов
/ 20 февраля 2009

У меня есть пара SQL-серверов на разных хостингах, и я ищу способ периодически обновлять один сервер, используя другой. Вот что я ищу:

  1. Как можно более автоматизировано - в идеале, без какого-либо участия с моей стороны, как только оно будет установлено.
  2. Переносит несколько баз данных целиком (включая любые изменения схемы) с одного сервера на другой
  3. Свободно разрешает изменения на исходном сервере, не нарушая мой процесс. По этой причине я не хочу использовать репликацию, поскольку мне придется прерывать ее каждый раз, когда происходит обновление источника, а затем заново создавать публикацию и подписку
  4. Одна база данных имеет размер около 4 ГБ и содержит двоичные данные. Я не уверен, есть ли способ экспортировать это в скрипт, но это был бы гигантский файл, если бы я это сделал.

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

У кого-нибудь есть идея получше, или то, что я в настоящее время считаю лучшим способом без репликации? Всем спасибо за помощь.

UPDATE: В итоге я разработал специальное решение для этого, используя BAT-файлы, 7Zip, командную строку FTP и OSQL, поэтому оно работает полностью автоматически и объединяет данные с десятков серверов по всей стране. Я подробно описал шаги в записи блога .

Спасибо за ваш вклад!

Ответы [ 6 ]

4 голосов
/ 20 февраля 2009

Это основная цель служб SSIS / DTS. Я делаю именно это с SSIS довольно часто. Если вы раньше не использовали SSIS, тогда sqlis.com - отличное место для начала (если вы не используете SQL2000, то вы будете использовать DTS, в этом случае начните с sqldts.com ). На эту тему есть много замечательных книг.

Но определенно стоит потратить время на изучение SSIS. Читая ваш вопрос, SSIS - IMO лучший маршрут на сегодняшний день. Вам не нужно писать строку кода, в ней есть все инструменты, встроенные для выполнения работы. Вы также можете запланировать его запуск с интервалом.

3 голосов
/ 20 февраля 2009

Я бы написал консольное приложение .NET для этого. Создать резервную копию так же просто, как открыть соединение SQL и выполнить «BACKUP DATABASE [] TO DISK = N '». Затем используйте встроенные библиотеки .NET FTP, чтобы отправить его на другой сервер. Вы даже можете добавить sharpziplib , чтобы сначала сжать его, а затем добавить это в запланированное задание.

С другой стороны, настройте службу Windows, которая следит за папкой, в которую ftp передает с помощью FileSystemWatcher , а затем восстанавливает резервную копию после завершения.

2 голосов
/ 20 апреля 2010

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

Инструмент копирования базы данных SQL Server
"Копирует базу данных сервера sql с одного сервера на другой путем ее резервного копирования, копирования файла резервной копии на целевой сервер и восстановления базы данных."

HTH кто-то ищет по этой теме.

0 голосов
/ 23 марта 2018

Используйте мастер копирования базы данных. - Щелкните правой кнопкой мыши исходную базу данных - Выберите Задачи - Скопировать базу данных.

В руководстве Вы также можете создать расписание для работы.

0 голосов
/ 26 марта 2012

Используйте Мастер импорта и экспорта для создания новых таблиц или добавления к существующим таблицам. Также вы можете использовать запрос для передачи данных в мастере ..

0 голосов
/ 20 февраля 2009

Вы можете получить более быстрое «резервное копирование», отсоединив каждую БД и скопировав файл MDF / LDF - это значит, что ваша БД в автономном режиме на короткое время. Кроме этого я бы пошел с комментарием Криса.

...