1

我们在兼容模式 80 (2000) 下运行 SQL Server 2008 R2,因为我们使用了许多已停用的功能。最初我以为我只能使用 2000 的功能,但令人惊喜的是,我展示了 CTE 工作,我认为这是超集案例。我们可以访问 2000、2005、2008 和 R2 的所有功能,但最近当我在玩 DMV/DMF 时,我尝试将 sql_handle 传递给 sys.dm_exec_sql_text,但它不起作用。一些 googe/hit and run 告诉我我需要更改兼容模式,因为这在兼容模式 80 下不起作用。那么当我们在兼容模式 80 (2000) 下使用 2008 r2 时,我们可以访问哪些功能?

这种兼容模式也适用于 SSIS 吗?

4

2 回答 2

0

从评论中我意识到这是部分向后兼容性,所以在我的场景中,我得到了 2000 和 2008 的所有功能。

于 2012-08-13T06:44:50.357 回答
0

将在给定兼容模式下工作的确切语言功能集取决于托管服务器级别。例如,在 SQL Server 2005 上运行的数据库的兼容级别 80 可能与在 SS 2008R2 上运行的同级别数据库存在一些差异。

底层查询计划器和数据库引擎的其他方面不会因更改兼容性级别而改变,但一些未记录的默认情况可能会有所不同。例如,即使是一个错误的选择,一些开发人员仍依赖 SQL Server 2000 数据库中行的默认顺序,但该默认顺序未记录在案,在 2005 年的某些情况下发生了变化,导致该数据库在 2005 年运行时出现问题兼容模式 80。当然,取决于默认顺序是一个巨大的禁忌,但这是一个底层引擎发生变化的例子,而实际执行的代码没有。

您需要完全回答这个问题的是,对于每个 SQL Server 版本,列出它在兼容模式下支持的所有后级版本,以及对于该 SQL Server 版本支持的每个级别,所有语言的完整列表在该特定级别的服务器上,该兼容性级别中支持的功能和所有不允许的功能(可能在更高级别中允许)。

虽然我发现了一些在较低级别中允许使用后续功能的示例(例如 2008R2 允许在兼容性 80 数据库中抛出/捕获),但我没有找到任何接近确定列表的东西,这将是有帮助的。

于 2018-07-17T17:27:23.647 回答