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 (S
SMS) 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 S
SMS 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.