SQL Server兼容性级别的含义

时间:2012-11-28 13:43:40

标签: sql-server-2008 sql-server-2005 compatibility

快速提问:

在我的SQL Server 2008上,我从SQL Server 2005迁移了数据库,并且SQL Server 2008上数据库的兼容级别设置为90(SQL Server 2005)。

这究竟是什么意思?

这意味着迁移的存储过程,触发器和函数在SQL Server 2008上运行良好,但有任何缺点吗?

将兼容级别设置为100(SQL Server 2008)的原因是什么?

性能?额外功能?

感谢名单

3 个答案:

答案 0 :(得分:8)

兼容性模式用于帮助人们迁移具有不再与较新版本的SQL兼容的功能的应用程序。如果您的应用程序需要sql 2008中不再支持的功能,您可能希望在兼容模式下运行它们;否则你想使用当前的SQL模式。我们的业务运行一个应用程序,由于它连接到数据库的方式需要SQL 2000兼容模式;但它在SQL 2012服务器上运行。

代码中的特定功能可能会影响性能,因为所需的逻辑不同而不是执行特别不同。作为一个非常普遍的规则,针对2012,2008上的函数优化的SQL代码将比SQL 2000或SQL 7更快,因为它们添加了诸如CTE和un / pivot之类的东西,这两者都允许简化编码。

答案 1 :(得分:1)

除了无法使用任何新功能(包括幕后的功能)作为查询优化器(在SQL Server 2014中)的改进之外,在兼容模式下保持不变使得未来的升级更加困难。 MSDN在版本http://msdn.microsoft.com/en-us/library/bb510680%28v=sql.110%29.aspx

之间有一个不同的列表

答案 2 :(得分:0)

永远不要假设将数据库备份和还原到较新的实例就可以了。这是许多隐藏的和意外的应用程序错误的原因。如果您的应用程序在数据库还原后出现错误,请查看其兼容性级别。如果已更改,则可能是原因。 更改兼容性级别的操作告诉数据库更改其功能集。也就是说,将添加一些功能,但同时将删除一些旧功能。例如,兼容性级别为100的INSERT和SELECT INTO语句中不允许使用FOR BROWSE子句,但是兼容性级别为90则允许但将其忽略。因此,如果您的应用程序使用此功能,则此更改可能会导致意外的结果。

website可以提供许多有关兼容性级别,其优缺点和大量最佳实践的信息。