无法将数据库架构复制到另一个 SQL 服务器实例
Cannot copy a database schema to another SQL Server instance
我有一个大型数据库,必须在较旧的 SQL 服务器实例上重新创建。数据库保留了与旧服务器对应的兼容性级别设置。我知道,它不能保证完全向后兼容,但数据库模式最初是在考虑旧服务器版本的情况下创建和维护的。
这是我尝试过的方法:
- 备份->恢复;当然它没有用,因为在较新的服务器版本上创建数据库备份时无法降级(哦,微软,为什么 Compat 级别也不能生成兼容的备份?)
- DACPAC -> 由于未知原因它失败了,声称它缺少一些依赖对象(但它们存在于数据库中)
- 生成模式脚本 - 在较新的 SQL Management Studio(尝试过 v17 和 v18)上它失败了
Microsoft.SqlServer.Management.Smo.SmoException: Cyclic dependencies found.
。在较旧的 SQL Management Studio (2008) 上,它不会失败,但会生成一个对象顺序错误的脚本,因此在视图中引用的表之前创建视图,当然,执行此类脚本会失败
- Visual Studio 架构比较工具 - 失败并显示无意义的警告并禁用更新按钮
Cannot generate deployment plan due to an internal error: An error occurred during deployment plan generation. Deployment cannot continue.
这个问题有有效的(最好是免费的)解决方案吗?如何在另一台服务器上的空数据库上复制数据库架构?
来源SQL服务器版本:2017
目标SQL服务器版本:2008 R2
数据库兼容级别:2008 (100)
利用 IF NOT EXISTS
构造和批处理分隔符 (GO
) 允许您多次 运行 您的脚本。
第一次尝试时可能无法创建某些对象,但这些错误不会阻止脚本的其余部分执行。
运行脚本多次,直到不再返回错误,将创建所有对象。
免责声明:来自个人经验。
我有一个大型数据库,必须在较旧的 SQL 服务器实例上重新创建。数据库保留了与旧服务器对应的兼容性级别设置。我知道,它不能保证完全向后兼容,但数据库模式最初是在考虑旧服务器版本的情况下创建和维护的。
这是我尝试过的方法:
- 备份->恢复;当然它没有用,因为在较新的服务器版本上创建数据库备份时无法降级(哦,微软,为什么 Compat 级别也不能生成兼容的备份?)
- DACPAC -> 由于未知原因它失败了,声称它缺少一些依赖对象(但它们存在于数据库中)
- 生成模式脚本 - 在较新的 SQL Management Studio(尝试过 v17 和 v18)上它失败了
Microsoft.SqlServer.Management.Smo.SmoException: Cyclic dependencies found.
。在较旧的 SQL Management Studio (2008) 上,它不会失败,但会生成一个对象顺序错误的脚本,因此在视图中引用的表之前创建视图,当然,执行此类脚本会失败 - Visual Studio 架构比较工具 - 失败并显示无意义的警告并禁用更新按钮
Cannot generate deployment plan due to an internal error: An error occurred during deployment plan generation. Deployment cannot continue.
这个问题有有效的(最好是免费的)解决方案吗?如何在另一台服务器上的空数据库上复制数据库架构?
来源SQL服务器版本:2017
目标SQL服务器版本:2008 R2
数据库兼容级别:2008 (100)
利用 IF NOT EXISTS
构造和批处理分隔符 (GO
) 允许您多次 运行 您的脚本。
第一次尝试时可能无法创建某些对象,但这些错误不会阻止脚本的其余部分执行。
运行脚本多次,直到不再返回错误,将创建所有对象。
免责声明:来自个人经验。