我一直在尝试从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]
任何建议都会有所帮助。
答案 0 :(得分:51)
从CodePlex下载免费的“SQL Azure迁移向导” - 我对此进行了简短的blog/screencast。确保将向导中的“TO”设置设置为AWS DNS名称,然后使用“SQL Server 2008”和不“SQL Azure”
答案 1 :(得分:8)
我使用.bak文件迁移SQL数据库时获得AWS支持的官方消息是它不受支持。所以不再从.bak文件中快速恢复。他们在此提供了迁移现有数据库的官方帮助:
Official AWS database migration guide
这也让我对Azure数据库迁移工具进行了非正式的眨眼。只需使用它来生成模式和/或数据的脚本,并针对您的RDS实例执行它。它是一个很好的工具。您必须先将.bak导入非RDS SQL服务器才能执行此操作。
答案 2 :(得分:6)
我使用基于Lynn的截屏视频的SQL Azure迁移工具在how to restore a .bak file to RDS上写了一些分步说明。这是比官方说明更简单的方法,它适用于我迁移的几个数据库。
答案 3 :(得分:6)
您可能会发现Data-tier Applications BACPAC格式将为您提供最方便的解决方案。您可以使用Export生成包含数据库架构和数据的文件。 Import将创建一个新数据库,该数据库使用基于该文件的数据填充。
与Backup and Restore操作相比,导出和导入不需要访问数据库服务器的文件系统。
您可以使用SQL Server Management Studio或通过.Net,Powershell,MSBuild等中的API处理BACPAC文件。
请注意,使用此方法导出然后从Amazon RDS导入和导入到Amazon RDS存在问题。在RDS上创建新数据库时,会在其中创建以下两个对象。
在导入过程中,BACPAC文件中包含的对象与RDS自动添加的对象之间会发生冲突。这些对象都存在于BACPAC文件中,并在创建新数据库时由RDS自动创建。
如果您有一个非RDS的SQL Server实例,那么您可以将BACPAC导入该实例,删除上面的对象,然后导出数据库以创建新的BACPAC文件。将它还原到RDS实例时,这个不会有任何冲突。
否则,可以使用以下步骤解决此问题。
注意:使用SQL Server Management Studio将BacPac导入RDS存在另一个相关问题,我解释了here。
答案 4 :(得分:3)
在源数据库的sql server management studio中使用导出向导。右键单击数据库>任务>出口数据。有一个向导可引导您将整个数据库发送到远程SQL Server。
答案 5 :(得分:0)
以下文章讨论如何使用数据复制数据库 - 生成用于将数据从一个表插入另一个表的T-SQL是我需要的。
答案 6 :(得分:0)
AWS设计的一种工具可以回答大多数(如果不是全部)兼容性问题-SQL Server的架构转换工具:https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.SQLServer.html
由于RDS并不支持所有的sql服务器数据库对象,甚至跨sql服务器版本也有所不同,因此评估报告也非常值得您花时间: https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_AssessmentReport.html
最后,一定要利用数据库迁移服务: https://aws.amazon.com/dms/