Question

We have SQL Server 2008 R2 running in compatibility mode 80 (2000) as we have lot of discontinued features used. Initially i thought i will get only features of 2000 to use, but as pleasant surprise i show CTE work, I thought this is superset case. we have access to all features of 2000, 2005, 2008 and R2 but recently when I was playing around with DMV/DMF I tried to pass sql_handle to sys.dm_exec_sql_text, but it did not work. A bit of googe/hit and run showed me that i need to change compatibility mode as this will not work in comaptibilty mode 80. So what features we have access to when we use 2008 r2 in compatibility mode 80 (2000) ???

Also does this compatibility mode apply on SSIS?

Was it helpful?

Solution

From comments I realize it is PARTIAL backward compatibility, so in my scenario I get all features of 2000 and some of 2008.

OTHER TIPS

The exact set of language features that will work in a given compatibility mode depends on the hosting server level. For example, compatibility level 80 of a database running on SQL Server 2005 can have some differences from the same level database being run on SS 2008R2.

The underlying query planner and other aspects of the database engine don't change by changing compatibility level, but some undocumented default situations might behave differently. For example, even though a bad choice, some developers depended on the default ordering of rows in a SQL Server 2000 database, but that default ordering, being undocumented, changed in some cases in 2005, causing a problem when that database was run on 2005 with compatibility mode 80. Of course, depending on default ordering is a huge no-no anyway, but this is an example where the underlying engine changed, whereas the actual code executed did not.

What you'd need to fully answer this is, for every version of SQL Server, to list all of the back-level versions it supports in compatibility modes, and for each level that that SQL Server version supports, a full list of all language features supported and all those disallowed (that may be allowed in a later level) in that compatibility level, on that specific level of server.

While I've found some examples of later features being allowed in lower levels (like 2008R2 allowing throw/catch in a compatibility 80 database), I haven't found anything close to definitive lists, which would be helpful.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top