使用复制向导时更改兼容性级别

Posted

技术标签:

【中文标题】使用复制向导时更改兼容性级别【英文标题】:Changing Compatability level when using copy wizard 【发布时间】:2011-03-31 16:47:11 【问题描述】:

如果将 Sql Server 2008 R2 数据库中的兼容级别更改为 2005,复制数据库向导是否可以将数据库从 2008 R2 复制到 2005 没有任何问题?

或者说生成脚本是将 2008 R2 数据库复制到 2005 数据库的唯一方法。

【问题讨论】:

【参考方案1】:

我不相信您可以使用复制向导将数据库降级回 2005。但是,SSMS 中的 DataImport... 任务应该能够帮助您移动数据表和视图。 (基本上它会创建一个 SSIS 包来传输表定义和数据)

但是如果你想真正移动数据库脚本是你最好的选择。您还可以查看 Red Gate 的工具,例如 SQLCompare 和 SQLDataCompare。

【讨论】:

【参考方案2】:

只是因为兼容性级别设置为低于当前版本的值不会禁止您使用较新的功能。它所做的只是停止强制删除功能以保持现有代码的向后兼容性。由于您可以在 2008 数据库中使用新的数据类型和功能,因此如果不分析使用了哪些新功能,就无法直接复制回 2005。

如果您在 2008 年进行开发并且产品是 2005 年,您需要立即停止这种做法。否则,在您尝试发送到 prod 之前,您将浪费大量时间使用新功能而没有意识到这一点。

数据库更改通常只能通过脚本完成,因为您不想冒险删除和重新创建包含现有数据的表。此外,数据库更改脚本应该像任何其他代码一样在您正在部署的版本的源代码控制中。对脚本进行更改的部分原因是您随后在 prod 上运行的脚本已经在 dev 和 QA 上进行了测试。

【讨论】:

以上是关于使用复制向导时更改兼容性级别的主要内容,如果未能解决你的问题,请参考以下文章

更改SQL 2005数据库的兼容级别对数据库有影响吗

VMware Workstation虚拟机兼容性问题处理

在 SQL 中创建和更改表值函数时对象类型不兼容

sqlsever2019不兼容老版本数据备份

材料设计向后兼容 android:colorAccent 在使用 appcompat7 时需要 API 级别 21

当 Visual Studio 2017 与 std 标头不兼容时,如何使用最高警告级别(墙)?