一个快速的信息问题:
在我的 SQL Server 2008 上,我有从 SQL Server 2005 迁移的数据库,并且 SQL Server 2008 上的数据库的兼容性级别设置为90
(SQL Server 2005)。
这究竟意味着什么?
这意味着迁移的存储过程、触发器和函数将在 SQL Server 2008 上运行良好,但有什么缺点吗?
100
将兼容性级别设置为(SQL Server 2008)的原因可能是什么?
表现?额外功能?
谢谢
一个快速的信息问题:
在我的 SQL Server 2008 上,我有从 SQL Server 2005 迁移的数据库,并且 SQL Server 2008 上的数据库的兼容性级别设置为90
(SQL Server 2005)。
这究竟意味着什么?
这意味着迁移的存储过程、触发器和函数将在 SQL Server 2008 上运行良好,但有什么缺点吗?
100
将兼容性级别设置为(SQL Server 2008)的原因可能是什么?
表现?额外功能?
谢谢
兼容模式可帮助人们迁移具有不再与新版本 SQL 兼容的功能的应用程序。如果您的应用程序需要 sql 2008 不再支持的功能,您可能希望在兼容模式下运行它们;否则你想使用当前的 sql 模式。我们的业务运行一个应用程序,由于它连接到数据库的方式需要 SQL 2000 兼容模式;但它在 SQL 2012 服务器上运行。
代码中的特定功能可能会影响性能,因为所需的逻辑不同,而不是执行特别不同。作为一个非常通用的规则,针对 2012、2008 上的函数优化的 SQL 代码将比 SQL 2000 或 SQL 7 更快,因为它们添加了诸如 CTE 和 un/pivot 之类的东西,这两者都允许简化编码。
除了无法使用任何新功能(包括作为查询优化器(在 SQL Server 2014 中)中的改进)的幕后功能之外,留在兼容模式下会使未来的升级更加困难。MSDN 有一个不同版本的列表http://msdn.microsoft.com/en-us/library/bb510680%28v=sql.110%29.aspx
永远不要假设将数据库备份和恢复到较新的实例就是迁移数据库所需的全部内容。这是许多隐藏的和意外的应用程序错误的原因。如果您的应用程序在数据库还原后出现错误,请查看其兼容性级别。如果它已经改变,这可能是原因。更改兼容级别的行为告诉数据库更改其功能集。也就是说,会添加一些功能,但同时会删除一些旧功能。例如,在兼容级别 100 的 INSERT 和 SELECT INTO 语句中不允许使用 FOR BROWSE 子句,但在兼容级别 90 时允许但忽略它。因此,如果您的应用程序使用此功能,此更改可能会导致意外结果。
该网站可以提供大量有关兼容性级别、优缺点以及大量最佳实践的信息。