Was bedeutet Microsoft-Kompatibilitätsstufe?

7

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?

bernd_k
quelle

Antworten:

5

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

gbn
quelle
FROM Tabelle (NOLOCK) wird in 90 (2005) und 100 (2008) unterstützt
sam yi
1
@samyi: ein bisschen wahr, aber siehe diese msdn.microsoft.com/en-gb/library/ms143179(SQL.90).aspx Suchen Sie nach "WITH-Schlüsselwort, wenn Sie Tabellenhinweise verwenden". Und für SQL Server 2008: msdn.microsoft.com/en-gb/library/ms143729(SQL.100).aspx
gbn
5

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).

  • 80 = SQL Server 2000
  • 90 = SQL Server 2005
  • 100 = SQL Server 2008 und R2
  • 110 = SQL Server 2012
  • 120 = SQL Server 2014

  • Unterschiede zwischen niedrigeren Kompatibilitätsstufen und Stufe 120

    • Beispielzeile (Das ältere Abfrageoptimierungsprogramm wird anstelle der neuen SQL Server 2014-Engine verwendet, die wesentliche Verbesserungen an der Komponente enthält, mit der Abfragepläne erstellt und optimiert werden.)
  • Unterschiede zwischen niedrigeren Kompatibilitätsstufen und Stufe 110
Kenneth
quelle