Setting cmptlevel to 80 on a SQL-Server 2005 inhibits the use of PIVOT and APPLY, but doesn't affect the use of Analytical Functions. Is there any rational behind this?
Some rationale I've observed, but this isn't exhaustive and is my guesswork
Compatibility Level isn't an all-or-nothing thing. It provides partial backwards compatibility while you fix issues.
A trival example with LOCK hints
FROM Table (NOLOCK) -- not allowed with level 90+
FROM Table WITH (NOLOCK) -- WITH is optional for level 80
Why this is now mandatory, I don't know. To do with CTEs?
For PIVOT and APPLY I suspect that a SQL statement using these is simply illegal SQL Server 2000 syntax whereas ROW_NUMBER is just an unknown function and "less" critical
An example using CROSS APPLY. For 80 this is illegal SQL Server 2000 syntax.
FROM SomeTable S CROSS APPLY --or JOIN dbo.someTVF (S.column)
There are many questions on SO about errors because of lower levels in newer versions for you to review and hopefully get an understanding
MSDN ALTER DATABASE Compatibility Level explains the behavior of the various levels. (just scroll down and you will find the comparison tables for the following topics )
you can find more specific comparison tables if you just change the Version from MSDN top menu (they are linked for top 3 versions in following list)
- 80 = SQL Server 2000
- 90 = SQL Server 2005
- 100 = SQL Server 2008 and R2
- 110 = SQL Server 2012
120 = SQL Server 2014
Differences Between Lower Compatibility Levels and Level 120
- sample line (The older query optimizer is used instead of new SQL Server 2014 engine which includes substantial improvements to the component that creates and optimized query plans )
- Differences Between Lower Compatibility Levels and Level 110