Das Festlegen von cmptlevel auf 80 auf einem SQL Server 2005 verhindert die Verwendung von PIVOT und APPLY, hat jedoch keine Auswirkungen auf die Verwendung von Analysefunktionen. Gibt es einen Grund dafür?
quelle
Das Festlegen von cmptlevel auf 80 auf einem SQL Server 2005 verhindert die Verwendung von PIVOT und APPLY, hat jedoch keine Auswirkungen auf die Verwendung von Analysefunktionen. Gibt es einen Grund dafür?
Einige Gründe, die ich beobachtet habe, aber dies ist nicht erschöpfend und meine Vermutung
Die Kompatibilitätsstufe ist nicht alles oder nichts. Es bietet teilweise Abwärtskompatibilität, während Sie Probleme beheben.
Ein Trival-Beispiel mit LOCK-Hinweisen
FROM
Table (NOLOCK) -- not allowed with level 90+
und
FROM
Table WITH (NOLOCK) -- WITH is optional for level 80
Warum dies jetzt obligatorisch ist, weiß ich nicht. Mit CTEs zu tun?
Für PIVOT und APPLY vermute ich, dass eine SQL-Anweisung, die diese verwendet, einfach eine illegale SQL Server 2000-Syntax ist, während ROW_NUMBER nur eine unbekannte Funktion und "weniger" kritisch ist
Ein Beispiel mit CROSS APPLY. Für 80 ist dies eine unzulässige SQL Server 2000-Syntax.
FROM
SomeTable S
CROSS APPLY --or JOIN
dbo.someTVF (S.column)
Es gibt viele Fragen zu SO zu Fehlern aufgrund niedrigerer Ebenen in neueren Versionen, die Sie überprüfen und hoffentlich verstehen können
Zu Ihrer Information, vollständige Liste der Unterschiede zwischen 80-90 und 90-100
Die Kompatibilitätsstufe MSDN ALTER DATABASE erläutert das Verhalten der verschiedenen Ebenen. (Scrollen Sie einfach nach unten und Sie finden die Vergleichstabellen für die folgenden Themen)
Sie können spezifischere Vergleichstabellen finden, wenn Sie nur die Version aus dem MSDN-Hauptmenü ändern (sie sind für die Top-3-Versionen in der folgenden Liste verknüpft).
120 = SQL Server 2014
Unterschiede zwischen niedrigeren Kompatibilitätsstufen und Stufe 120
quelle