我们有一些数据库脚本需要从 SQL Server 2008 R2 迁移回 2005,通常在 SQL Server 2008 / 2008 R2 中创建的脚本无法在 SQL Server 2005 安装上运行(一些客户仍在使用)。
所以我的问题是:根据您的经验/知识,这真的有必要吗,或者在 SQL Server 2008 (2008 R2) 上将兼容性级别设置回 90 是否可以解决 SQL Server 2005 中未被注意到的破坏脚本的问题?MSDN 说“兼容性级别仅提供与早期版本的 SQL Server 的部分向后兼容性”,所以我在这里不确定。
谢谢...
我想要一个“功能将通过兼容性级别 90 但在 SQL Server 2005 上中断”或链接的具体列表。如果列表是短列表,我们可以将其转换为内部“不要那样做!”列表并保存很多工作。
不,兼容性级别是允许已弃用的功能工作,而不是阻止您编写无法在较低版本上工作的代码。
如果您的生产机器是 SQL Server 2005,则必须在 SQL Server 2005 机器上进行开发,以确保 2005 中允许的功能是代码中唯一的功能。
当然,在线图书中有一个页面显示了 2008 年的所有新增功能,因此您可以简单地禁止您的开发人员使用它们。并在代码审查中检查它们,但针对正确的数据库进行开发是唯一真正的解决方案。
该列表并不短且奇特,兼容模式并非旨在让您在更高的数据库上开发并部署到较低的数据库。
不会。兼容性级别仅影响两个版本中存在的某些功能。以ALTER DATABASE 兼容级别为例:
如您所见,您仍然可以编写一个使用 MERGE(SQL Server 2008 后才有的功能)的脚本,并在 90 兼容模式下运行它,它会工作。但是,该脚本将在 SQL Server 2005 上中断。兼容性级别 90 仅影响关键字的强制执行(这会影响解析,在 100 模式下,名为的表
MERGE
必须用括号括起来[MERGE]
),但不影响执行。像这样的功能还有很多。因此,您唯一的选择是针对目标 SQL Server 运行。