hko*_*hko 4 sql-server compatibility-level
我们有一些数据库脚本需要从 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 Compatibility Level为例:
90 或更低的兼容性级别设置:MERGE 不强制为保留关键字。兼容性级别设置为 100:MERGE 是完全保留的关键字。MERGE 语句在 100 和 90 兼容级别下均受支持。
如您所见,您仍然可以编写一个使用 MERGE(SQL Server 2008 后唯一功能)的脚本,并在 90 兼容模式下运行它,它会起作用。但是,该脚本将在 SQL Server 2005 上中断。兼容性级别 90 仅影响关键字的执行(这会影响解析,在 100 模式下,命名的表MERGE必须用括号括起来作为[MERGE]),而不影响执行。
像这样的功能还有很多。因此,您唯一的选择是针对目标 SQL Server 运行。
| 归档时间: |
|
| 查看次数: |
2506 次 |
| 最近记录: |