我们在兼容模式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向我展示了我需要更改兼容模式,因为这在comaptibilty模式80中不起作用。那么当我们在兼容模式80(2000)中使用2008 r2时我们可以访问哪些功能??? / p>
此兼容模式是否也适用于SSIS?
答案 0 :(得分:0)
从评论我发现它是PARTIAL向后兼容性,所以在我的场景中我获得了2000和2008年的所有功能。
答案 1 :(得分:0)
在给定的兼容模式下可以使用的确切语言功能集取决于托管服务器级别。例如,在SQL Server 2005上运行的数据库的兼容性级别80与在SS 2008R2上运行的同一级别数据库可能会有一些差异。
基础查询计划器和数据库引擎的其他方面不会通过更改兼容性级别来更改,但是某些未记录的默认情况可能会有所不同。例如,尽管选择不正确,但一些开发人员仍依赖于SQL Server 2000数据库中的行的默认顺序,但是在2005年的某些情况下,该默认顺序(未记录)在某些情况下发生了更改,从而导致该数据库在2005年运行时出现问题兼容模式80。当然,根据默认顺序,无论如何都是一个巨大的禁止,但这是一个示例,其中底层引擎发生了变化,而实际执行的代码没有发生变化。
您需要完全回答的问题是,对于SQL Server的每个版本,列出其在兼容模式下支持的所有底层版本,对于SQL Server版本所支持的每个级别,列出完整列表在服务器的特定级别上,在该兼容级别中支持的所有语言功能以及所有不被允许的功能(以后可能会允许)。
虽然我发现了一些在较低级别上允许使用更高功能的示例(例如2008R2允许在兼容性80数据库中进行抛出/捕获),但我没有发现任何与确定性列表相近的内容,这会有所帮助。