迁移到Amazon SQL Server RDS

tou*_*der 32 sql-server amazon-rds

我一直在尝试从Win2008服务器上的常规SQL Server迁移到Amazon AWS RDS上的SQL Server.

我认为简单的备份和恢复会起作用.虽然AWS RDS似乎无法访问文件系统,因此sql脚本似乎都需要源服务器和目标服务器上的本地文件系统.我尝试了一个脚本跟随

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]
Run Code Online (Sandbox Code Playgroud)

任何的意见都将会有帮助.

Lyn*_*git 51

CodePlex下载免费的"SQL Azure迁移向导" - 我做了一个简短的博客/截屏视频.确保将向导中的"TO"设置设置为AWS DNS名称,然后使用"SQL Server 2008"而不是 "SQL Azure"

  • 我想亚马逊不希望在他们的文档上链接到这个,但是比他们建议的更容易的迁移方式(我以前浪费了几个小时的时间) (3认同)
  • 有人潜入本论坛/投诉底部的参考资料:https://forums.aws.amazon.com/message.jspa?messageID = 442219#442219 (2认同)

Tj *_*lie 8

对于使用.bak文件迁移SQL数据库而获得AWS支持的官方消息是,它不受支持.所以不再从.bak文件中快速恢复.他们在此提供了迁移现有数据库的官方帮助:

官方AWS数据库迁移指南

这也让我对Azure数据库迁移工具进行了非正式的眨眼.只需使用它来生成模式和/或数据的脚本,并针对您的RDS实例执行它.它是一个很好的工具.您必须先将.bak导入非RDS SQL服务器才能执行此操作.

SQL Azure迁移工具


hum*_*ads 6

我写了一些关于如何使用基于Lynn的截屏视频的SQL Azure迁移工具将.bak文件恢复到RDS的分步说明.这是一个比官方说明更简单的方法,它适用于我迁移的几个数据库.


Sco*_*nro 6

您可能会发现数据层应用程序 BACPAC格式将为您提供最方便的解决方案.您可以使用" 导出"生成包含数据库架构和数据的文件.导入将创建一个新数据库,该数据库使用基于该文件的数据填充.

与" 备份和还原"操作相反,"导出"和"导入"不需要访问数据库服务器的文件系统.

您可以使用SQL Server Management Studio或通过.Net,Powershell,MSBuild等API处理BACPAC文件.

导出数据层应用程序对话框

请注意,使用此方法导出然后从Amazon RDS导入和导入到Amazon RDS存在问题.在RDS上创建新数据库时,会在其中创建以下两个对象.

  • 具有db_owner角色成员身份的用户.
  • rds_deny_backups_trigger触发器

rds_deny_backups_trigger触发器

在导入期间,BACPAC文件中包含的对象与RDS自动添加的对象之间将存在冲突.这些对象都存在于BACPAC文件中,并在创建新数据库时由RDS自动创建.

如果您有一个非RDS的SQL Server实例,那么您可以将BACPAC导入该实例,删除上面的对象,然后导出数据库以创建新的BACPAC文件.将它还原到RDS实例时,这个不会有任何冲突.

否则,可以使用以下步骤解决此问题.

  1. 编辑BACPAC文件中的model.xml文件(BACPAC只是zip文件).
  2. 删除与上面列出的对象(由RDS自动添加的对象)相关的Type属性中具有以下值的元素.
    • SqlRoleMembership
    • SqlPermissionStatement
    • SqlLogin
    • SqlUser
    • SqlDatabaseDdlTrigger
  3. 使用SHA256类上的ComputeHash方法之一为mod.xml文件的修改版本生成校验和.
  4. 使用BitConverter.ToString()方法将哈希值转换为十六进制字符串(您将需要删除分隔符).
  5. 将origin.xml文件(也包含在BACPAC文件中)的Checksum元素中的现有哈希值替换为新哈希.
  6. 通过使用替换为新版本的model.xml和origin.xml文件压缩原始内容来创建新的BACPAC文件.不要为此目的使用System.IO.Compression.ZipFile,因为似乎与生成的zip文件存在一些冲突 - 数据不包含在导入中.我使用7Zip没有任何问题.
  7. 导入新的BACPAC文件,您不应与RDS自动生成的对象发生任何冲突.

注意:使用SQL Server Management Studio将BacPac导入RDS还有另一个相关问题,我在此解释.


tou*_*der 0

我需要以下文章,讨论如何使用数据复制数据库 \xe2\x80\x93 生成 T-SQL 以将数据从一个表插入到另一个表。

\n\n

http://blog.sqlauthority.com/2009/07/29/sql-server-2008-copy-database-with-data-generate-t-sql-for-inserting-data-from-one-table-to-另一个表/

\n