Подтвердить что ты не робот

Перенос на Amazon SQL Server RDS

Я пытаюсь перейти от обычного SQL Server на сервере Win2008 к SQL Server на Amazon AWS RDS.

Я думал, что простая резервная копия и восстановление будут работать. Хотя AWS RDS, похоже, не имеет доступа к файловой системе, поэтому для всех сценариев sql необходима локальная файловая система на исходном и конечном сервере. Я попытался выполнить script после

exec sp_addlinkedserver @server='test.xxxx.us-east-1.rds.amazonaws.com'

-- Verify that the servers were linked (lists linked servers)
exec sp_linkedservers

EXEC ('RESTORE DATABASE [orchard] FROM DISK = ''C:\Temp\orchard.bak'' WITH FILE = 1,  NOUNLOAD, STATS = 10')
AT [test.xxxx.us-east-1.rds.amazonaws.com]

Любые предложения будут полезны.

4b9b3361

Ответ 1

загрузите бесплатный "Мастер миграции Azure Migration" из CodePlex - я сделал короткий блог /screencast об этом. Обязательно установите параметр "TO" в мастере на имя AWS DNS, а затем используйте "SQL Server 2008" и не "SQL Azure"

Ответ 2

Официальное слово, которое я получил для поддержки AWS при миграции баз данных SQL с использованием файлов .bak, заключается в том, что оно не поддерживается. Таким образом, нет более быстрого восстановления из .bak файлов. Они предложили официальную помощь для миграции существующих баз данных:

Официальное руководство по миграции базы данных AWS

И также дал мне неофициальную ссылку на инструмент миграции базы данных Azure. Просто используйте его для создания script вашей схемы и/или данных и выполните ее против вашего экземпляра RDS. Это хороший инструмент. Для этого вам сначала нужно будет импортировать .bak в SQL-сервер, отличный от RDS.

Инструмент миграции SQL Azure

Ответ 3

Я написал несколько пошаговых инструкций по как восстановить .bak файл в RDS, используя инструмент SQL Azure Migration Tool на основе Lynn screencast. Это гораздо более простой способ, чем официальные инструкции, и он хорошо работал для нескольких баз данных, которые я перенесла.

Ответ 4

Вероятно, вы обнаружите, что Приложения уровня данных Формат BACPAC предоставит вам наиболее удобное решение. Вы можете использовать Export для создания файла, который содержит как схему базы данных, так и данные. Import создаст новую базу данных, заполненную данными на основе этого файла.

В отличие от операций Backup and Restore, экспорт и импорт не требуют доступа к файловой системе сервера базы данных.

Вы можете работать с файлами BACPAC с помощью SQL Server Management Studio или через API в .Net, Powershell, MSBuild и т.д.

Export Data-tier Application Dialog

Обратите внимание, что с этим методом возникают проблемы с Экспорт, а затем Импорт из и в Amazon RDS. Поскольку в RDS создается новая база данных, в ней создаются следующие два объекта.

  • Пользователь с членством в роли db_owner.
  • Триггер rds_deny_backups_trigger

The rds_deny_backups_trigger Trigger

Во время импорта будет конфликт между объектами, включенными в файл BACPAC, и те, которые автоматически добавляются RDS. Эти объекты присутствуют в файле BACPAC и автоматически создаются RDS при создании новой базы данных.

Если у вас есть экземпляр без RDS SQL Server, вы можете импортировать BACPAC в этот экземпляр, удалить объекты выше, а затем экспортировать базу данных для создания нового файла BACPAC. У этого не возникнет никаких конфликтов при восстановлении экземпляра RDS.

В противном случае эту проблему можно обойти, выполнив следующие шаги.

  • Отредактируйте файл model.xml в файле BACPAC (BACPAC - это только zip файлы).
  • Удалить элементы со следующими значениями в их атрибутах Type, которые связаны с перечисленными выше объектами (те, которые автоматически добавляются RDS).
    • SqlRoleMembership
    • SqlPermissionStatement
    • SqlLogin
    • SqlUser
    • SqlDatabaseDdlTrigger
  • Создайте контрольную сумму для модифицированной версии файла model.xml, используя один из методов ComputeHash в классе SHA256.
  • Используйте метод BitConverter.ToString() для преобразования хэша в шестнадцатеричную строку (вам нужно будет удалить разделители).
  • Замените существующий хеш в элементе Checksum в файле origin.xml(также содержащемся в файле BACPAC) с новым.
  • Создайте новый файл BACPAC, заменив содержимое оригинала, заменив файлы model.xml и origin.xml новыми версиями. НЕ используйте System.IO.Compression.ZipFile для этой цели, поскольку, как представляется, существует некоторый конфликт с созданным zip файлом - данные не включены в импорт. Я без проблем использовал 7Zip.
  • Импортируйте новый файл BACPAC, и у вас не должно быть конфликтов с объектами, которые автоматически генерируются RDS.

Примечание.. Существует другая связанная с этим проблема с импортом BacPac в RDS с помощью SQL Server Management Studio, который я объясняю здесь.

Ответ 5

Используйте мастер экспорта в студию управления сервером sql в исходной базе данных. Щелкните правой кнопкой мыши по базе данных > задачи > экспортировать данные. Существует мастер, который проведет вас через отправку всей базы данных на удаленный сервер sql.