Microsoft SQL Server 2022

Eintrag zuletzt aktualisiert am: 24.05.2022


Microsoft SQL Server 2022 ist Nachfolger von Microsoft SQL Server 2019.

Interne Versionsnummer
16 (Kompatibilitätslevel: 160)

Termine
2.11.2021: Preview 1 für begrenzen Nutzerkreis
https://cloudblogs.microsoft.com/sqlserver/2021/11/02/announcing-sql-server-2022-preview-azure-enabled-with-continued-performance-and-security-innovation/

24.5.2022: Preview 2 für breite Öffentlichkeit

Neue Features
Schwerpunkt von SQL Server 2022 (interne Versionsnummer: 16) ist die verbesserte Cloud-Integration. Microsoft spricht von "most Azure-enabled release of SQl Server".

In SQL Server 2022 ist ein Failover von lokalen Datenbankinstanzen zu dem Cloud-basierten Azure SQL möglich. Eingerichtet wird die neue Funktion über neuen Menüeintrag "Azure SQL Managed Instance Link" in SQL Server Management Studio (SSMS) ab Version 19.0, das zeitgleich unter https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms-19 erschienen ist und sich parallel zu früheren Hauptversionen von SSMS installiert. Die Cloud-Datenbank wird damit zu einem Replikat, das nur gelesen werden kann, im Fehlerfall aber die führende Rolle übernimmt. Der lokale SQL Server kann später die Hauptrolle wieder erhalten, indem man ein Backup der Cloud-Instanz im lokalen SQL Server wieder einspielt. Derzeit muss man sich für diesen Replikationsdienst einzeln registrieren [https://forms.office.com/pages/responsepage.aspx?id=v4j5cvGGr0GRqy180BHbR5o5Tvh3duNFm5f7UUZcVpZUOFVNRzNUSEhYQlNPQUxDRUxITVZGNE5NRC4u].

Mit Azure Synapse Link for SQL [https://techcommunity.microsoft.com/t5/azure-synapse-analytics-blog/announcing-the-public-preview-of-azure-synapse-link-for-sql/ba-p/3372986] lässt sich mit wenigen Mausklicks eine Verbindung einer SQL Server-Datenbank zum Cloud-Dienst Azure Synapse Analytics [https://azure.microsoft.com/en-us/services/synapse-analytics] zur Datenauswertung einrichten. Nach einer initialen Replikation der bestehenden Daten, die einige Zeit in Anspruch nehmen kann, werden die sich fortan ändernden Daten nahezu in Echtzeit in die Cloud zur Analyse übertragen. Dabei soll die SQL Server 2022-Ausgangsdatenbank kaum belastet werden.
AAD und mehr Operatoren für die Enklaven

Zur Authentifizierung unterstützt SQL Server 2022 neben den altbekannten Windows-Nutzern und SQL Server-eigenen Nutzerkonten ("SQL Authentifizierung") nun auch die Authentifizierung via Azure Active Directory (AAD) [https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/azure-ad-authentication-sql-server-overview?view=sql-server-ver16] mit Benutzername/Kennwort oder Access Token sowie Multi-Faktor-Authentifizierung.

Beim Tabular Data Stream (TDS) [https://www.dotnet-lexikon.de/TabularDataStream/lex/3411.aspx], dem Netzwerkprotokoll zur Kommunikation mit einem SQL Server, ist die Verschlüsselung der Daten nun verpflichtend. Die neue Version des Netzwerkprotokolls trägt die Versionsnummer 8.0.
Die in SQL Server 2019 eingeführten sicheren Enklaven für Always Encrypted [https://www.heise.de/ix/meldung/Angeblich-mit-Intelligenz-Microsoft-SQL-Server-2019-ist-erschienen-4578248.html] bieten nun auch Unterstützung für die SQL-Operatoren JOIN, GROUP BY und ORDER BY.


Auch den SQL Server-Datenbankern hat Microsoft in Version 2022 verbessert. So werden die SQL-Ausführungspläne nun parameterabhängig optimiert. Der SQL Server kann dafür mehrere Ausführungspläne für eine Stored Procedure vorhalten, wenn die gelieferten Datenmengen stark vom Parameter abhängig sind. Diese "Parameter Sensitive Plan Optimization" ist automatisch aktiv, wenn die Datenbank im Kompatibilitätslevel 160 betrieben wird. Der Vorgänger, SQL Server 2019, hatten als höchsten Level 150 (https://docs.microsoft.com/de-de/sql/t-sql/statements/alter-database-transact-sql-compatibility-level).

Ein Datenbankadministrator oder -entwickler kann in SQL Server 2022 Optimierungen für SQL-Befehle nun auch über die neue Stored Procedure sys.spquery_store_sethints einstellen. In diesen, bisher nur in der Cloud-Variante von SQL Server verfügbaren Query Store Hints lassen viele der Optionen einstellen, die man bisher schon per OPTION an einen SQL-Befehl anhängen kann. Die neue Stored Procedure hilft in Szenarien, in denen der Datenbankadministrator den SQL-Befehl nicht beeinflussen kann, weil er aus einer Anwendung kommt, deren Quellcode man nicht besitzt oder ändern kann. Damit sucht man erst die Query-ID einer Abfrage, um dann eine Optimierung für nachfolgende Ausführungen festzulegen:
/*
Now let's find the query_id associated with this query.
*/
SELECT querysql_text, q.queryid
FROM sys.querystore_querytext qt
INNER JOIN sys.querystorequery q ON
qt.querytext_id = q.query_textid
WHERE querysql_text like N'%ORDER BY ListingPrice DESC%' and query_sql_text not like N'%querystore%';
GO

/*
We can set the hint associated with the query_id returned in the previous result set, as below.
Note, we can designate one or more query hints
*/
EXEC spquery_store_set_hints @queryid=5, @value = N'OPTION(RECOMPILE)';
GO

Für die Arbeit mit JSON-Daten bietet Transact-SQL in Microsoft SQL Server 2022 die neue Funktionen an. ISJSON() prüft, ob eine Zeichenkette gültige JSON-Daten enthält. Mit JSONPATHEXISTS() prüft der Datenbankentwickler, ob es in einer Zeichenkette eine bestimmten JSON-Pfad gibt, z.B.
DECLARE @jsonInfo NVARCHAR(MAX)
SET @jsonInfo=N'{"info":{"address":[{"town":"Essen"},{"town":"Hannover"}]}}';
SELECT JSONPATHEXISTS(@jsonInfo,'$.info.address'); -- 1
Mit der Funktion JSON_OBJECT() erzeugt man JSON-Datenstrukturen, z.B.
SELECT JSON_OBJECT('name':'Dr. Holger Schwichtenberg', 'alter':49)
liefert die Zeichenkette
{"name":"Dr. Holger Schwichtenberg","alter":49}
Analog dazu erzeugt man mit JSON_ARRAY() ein JSON-Array:
SELECT JSON_ARRAY('Essen', 45127, 'Hannover', 30625)
Dies liefert:
["Essen",45127,"Hannover",30625]
Weitere neue T-SQL-Funktionen sind GREATEST() und LEAST(), die den größten bzw. kleinesten Wert aus einer Menge liefern. STRING_SPLIT() spaltet eine Zeichenkette in Teile auf und liefert diese als Ergebnistabelle.
Ledger nun auch für lokalen SQL Server
SQL Server 2022 bietet zudem jetzt eine Funktion mit Namen "Ledger" (deutsch: Hauptbuch) an, mit dem die Datenintegrität einer Tabelle nachvollziehbar wird. Wie bei einer Blockchain bekommt dafür jede Transaktion einen kryptografischen Hash. Datenbankadministratoren können damit gegenüber Auditoren auch nachweisen, dass Werte unverändert sind. Zudem erlaubt Ledger das Zurücksetzen auf einen geprüften Stand. Diese Funktion war zuvor nur in der Azure SQL verfügbar.

Weitere Informationen

Weitere Informationen zu SQL Server 2022 findet man in einem Blogeintrag [https://cloudblogs.microsoft.com/sqlserver/2022/05/24/announcing-sql-server-2022-public-preview-azure-enabled-with-continued-performance-and-security-innovation/] sowie in der Dokumentation [https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-2022?view=sql-server-ver16].
Die Vorschauversion kann kostenfrei unter https://aka.ms/GetSQLServer2022 bezogen und 180 Tage genutzt werden.