【问题标题】:How to migrate the schema of a SQL Server database from on-premise to SQL Server on AWS RDS with non-supported features如何使用不受支持的功能将 SQL Server 数据库的架构从本地迁移到 AWS RDS 上的 SQL Server
【发布时间】:2022-08-18 00:00:55
【问题描述】:
我正在开发一个与 SQL Server 2019 配合使用的本地服务器并将其迁移到云中。现在的数据不是重要的东西,而是模式,因为这是概念证明。主要问题是本地服务器有时使用filestream 来处理文件。随着重构和应用程序更新的发生,这将不得不在未来改变。
我认为最简单的方法是 generate a schema .sql script from the old db 并在新环境中运行它,但这会产生大量错误(25k)。
大多数错误包括:
- 数据库\'master\'中的权限失败
- 在新的干净数据库中找不到某些对象
- 对象上不允许有扩展属性,或者它不存在
- 无效的数据类型
- 数据库不存在或权限不允许
- 文件流功能被禁用
因此,这可能无法作为将架构迁移到新数据库的解决方案。我听说过 AWS DMS(数据迁移服务),但对此我知之甚少。我在问,当 RDS 不支持 SQL Server 的本机功能时,我可以查看哪些工具来迁移到 RDS?
标签:
sql-server
migration
amazon-rds
sqlfilestream
【解决方案1】:
导入模式的一种方法是通过生成的脚本向导。您将不得不手动调整一些东西以使文件流和 sql 服务器的本地配置与 aws RDS 很好地配合使用。
生成和发布脚本指南
-
转到源数据库
-
右键单击菜单中的数据库
左侧(对象资源管理器)任务>生成脚本
-
选择所有表,
程序等。文件流表除外。
-
在 Set Scripting Options 下弹出的 Scripts 向导中,选择制作一个 .sql 文件,在高级选项下,选择 Schema Only。这将生成一个脚本,其中只有表的元数据,而不是其中的数据
-
生成文件。
-
将 .sql 文件复制到
EC2 实例(可能是堡垒主机)连接到
RDS 实例。
-
打开 MS SQL Management Studio 并右键单击
对象资源管理器中最顶部的对象并打开一个新查询。
-
将 .sql 文件中的代码复制并粘贴到查询窗口中。
-
将数据和日志文件的文件路径位置更改为
D:\rdsdbdata\DATA\TEST_AWS.mdf 和 D:\rdsdbdata\DATA\TEST_AWS_Log.ldf
分别。 RDS 将无法识别任何其他文件位置
并且将无法创建表。
-
注释或删除以下代码行:
一个。 ALTER DATABASE [TEST_AWS] 设置可信关闭
湾。 ALTER DATABASE [TEST_AWS] SET HONOR_BROKER_PRIORITY
C。 ALTER DATABASE [TEST_AWS] SET DB_CHAINING OFF 创建全局用户
d。文件流
-
执行脚本
-
考虑在创建新数据库之前向脚本顶部添加 DROP DATABASE [TEST_AWS],以防您需要多次运行脚本来查找错误。这将使您免于覆盖错误或在内存中拥有未完成的表。