🚀 SQL Server 2025 · Die Neuerungen für Entwickler
📋 Übersicht der wichtigsten Neuerungen
HIGHLIGHTS-- Schneller Einstieg: Überblick über die neue Welt in SQL Server 2025
SELECT
CURRENT_DATE AS Heute, -- Neues Standard-Datum
'Hallo' || ' Welt' AS Concatenated; -- + Operator für Strings
-- CHECK Vollständigkeit: JSON und Vektoren sind erstklassige Datentypen
DECLARE @jsonData JSON = '{"produkt": "SQL Server 2025", "rating": 5}';
DECLARE @embedding VECTOR(3) = ARRAY[0.12, 0.34, 0.56];
SELECT @jsonData, @embedding;
🤖 KI & Vektorsuche: Semantische Abfragen direkt in T‑SQL
AI · VECTOR-- 1. Vektor-Spalte in einer Tabelle (z. B. für Produkt-Embeddings)
CREATE TABLE ProdukteEmbeddings (
ProduktID INT PRIMARY KEY,
Name NVARCHAR(200),
Beschreibung NVARCHAR(MAX),
Embedding VECTOR(1536) -- Platzhalter für OpenAI-Dimensionen
);
-- 2. Ähnlichkeitsabfrage: finde Produkte, die semantisch zu einer Beschreibung passen
DECLARE @SuchVektor VECTOR(1536) =
AI_GENERATE_EMBEDDINGS('wasserdicht und robust', 'model: ada-002');
SELECT TOP 10
Name,
VECTOR_DISTANCE(Embedding, @SuchVektor) AS CosineDistance,
Beschreibung
FROM ProdukteEmbeddings
ORDER BY CosineDistance;
-- 3. DiskANN-Vektorindex für schnellste ANN-Suche (Approximate Nearest Neighbor)
CREATE VECTOR INDEX IX_ProdukteVektoren
ON ProdukteEmbeddings(Embedding)
WITH (DISTANCE_METRIC = 'COSINE', LIST_SIZE = 100, SAMPLE_RATE = 0.2);
🔍 Native RegEx in T‑SQL – endlich!
REGEX · STRING-- 1. E-Mail-Format prüfen (REGEXP_LIKE)
SELECT
Email,
IIF(REGEXP_LIKE(Email,
'^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$'),
'gültig', 'ungültig') AS EmailStatus
FROM Kunden;
-- 2. Telefonnummern normalisieren (REGEXP_REPLACE)
UPDATE Kontakte
SET Telefon = REGEXP_REPLACE(Telefon, '[^0-9+]', '')
WHERE REGEXP_LIKE(Telefon, '[^0-9+]');
-- 3. Erste Zifferngruppe extrahieren (REGEXP_SUBSTR)
SELECT
ProduktCode,
REGEXP_SUBSTR(ProduktCode, '[0-9]+') AS ErsteZahl
FROM Produkte;
-- 4. String in Zeilen zerlegen (REGEXP_SPLIT_TO_TABLE) – erweitert STRING_SPLIT
SELECT value
FROM REGEXP_SPLIT_TO_TABLE('Apfel, Birne ; Kirsche', '[;,\s]+');
📦 JSON: Jetzt erstklassiger Datentyp mit Punktnotation
JSON-- 1. Tabelle mit JSON-Spalte und automatischer Validierung
CREATE TABLE Bestellungen (
BestellID INT PRIMARY KEY,
Kundendaten JSON, -- Validiert automatisch
ErstelltAm DATETIME DEFAULT GETDATE()
);
-- 2. Einfügen eines JSON-Dokuments (bei Fehlern sofortiger Abbruch)
INSERT INTO Bestellungen (BestellID, Kundendaten)
VALUES (1001, '{"name": "Anna Schmidt", "stadt": "Berlin", "punkte": 250}');
-- 3. Punktnotation für direkte Attributzugriffe (kein JSON_VALUE mehr!)
SELECT
BestellID,
Kundendaten.name AS Kunde,
Kundendaten.stadt AS Ort,
Kundendaten.punkte AS Bonuspunkte
FROM Bestellungen;
-- 4. JSON-Index auf ein Attribut für schnelleres Filtern
CREATE INDEX IX_Bestellungen_KundenStadt
ON Bestellungen((Kundendaten.stadt));
-- 5. JSON‑Aggregatfunktionen: Erzeuge JSON-Arrays direkt aus relationalen Abfragen
SELECT
Abteilung,
JSON_ARRAYAGG(MitarbeiterName) AS MitarbeiterListeJSON
FROM TeamMitglieder
GROUP BY Abteilung;
🧮 Neue T‑SQL-Funktionen: PRODUCT(), CURRENT_DATE & verschlankte Konkatenation
PRODUCT · DATE · STRING-- 1. PRODUCT(): Multiplikation über eine Gruppe (z. B. kumulative Zinsfaktoren)
WITH Sparplan AS (
SELECT Jahr, Zinsfaktor FROM ( VALUES
(2024, 1.045), (2025, 1.051), (2026, 1.038)
) AS Zins(Jahr, Zinsfaktor)
)
SELECT
EXP(SUM(LOG(Zinsfaktor))) AS Umweg, -- alter Trick, nicht mehr nötig
PRODUCT(Zinsfaktor) AS Direkt, -- endlich ohne Umwege
PRODUCT(Zinsfaktor) * 1000 AS Endkapital
FROM Sparplan;
-- 2. CURRENT_DATE: einfaches heutiges Datum (ISO-Standard)
SELECT
GETDATE() AS MitZeit,
CAST(GETDATE() AS DATE) AS Umstaendlich,
CURRENT_DATE AS Modern;
-- 3. '||' für sicheres String-Concat (behandelt NULL als leeren String)
SELECT
Vorname || ' ' || Nachname AS Vollname
FROM Person;
⚡ Performance-Optimierungen: Intelligente Abfrageverarbeitung
IQP · PSP · OPPO · Query Store-- 1. Optimiere eine Prozedur mit optionalem Parameter (OPPO)
CREATE PROCEDURE SucheKunden @Stadt NVARCHAR(50) = NULL
AS
SELECT * FROM Kunden
WHERE (@Stadt IS NULL OR Stadt = @Stadt)
OPTION (OPTIMIZE FOR UNKNOWN); -- OPPO wählt dynamisch den richtigen Plan
-- 2. Neue Abfragehinweise für noch mehr Kontrolle
SELECT * FROM GrosserTabelle
OPTION (ABORT_QUERY_EXECUTION); -- bricht bei Timeout ab
-- 3. Query Store nutzen: Erkennt Planregressionen sofort
SELECT query_id, plan_id, avg_duration, last_execution_time
FROM sys.query_store_plan
ORDER BY last_execution_time DESC;
📀 Änderungen an Editionen: Neue Developer Edition & höhere Limits
LIZENZ-- Editionen im Überblick (ab SQL Server 2025)
SELECT
@@VERSION AS Version,
SERVERPROPERTY('Edition') AS Edition,
SERVERPROPERTY('ProductLevel') AS ServicePack;
/*
Wesentliche Änderungen:
- Standard Edition: nun bis zu 32 Kerne / 256 GB RAM, Resource Governor enthalten.
- Express Edition: max. DB-Größe 50 GB, Advanced Services entfallen (jetzt integriert).
- Web Edition: wird ab SQL Server 2025 nicht mehr angeboten.
- Neue kostenlose Developer Editions (Standard und Enterprise) für Entwicklung & Test.
- Power BI Report Server ist in allen Editionen außer Express enthalten.
*/
🛡️ Sicherheit: TLS 1.3, Managed Identities & verbesserte Verschlüsselung
SECURITY-- 1. Verschlüsselte Verbindung mit TLS 1.3 aktivieren (Serverkonfiguration)
EXEC sp_configure 'network packet size', 4096;
EXEC sp_configure 'force encryption', 1;
RECONFIGURE;
-- 2. Managed Identity für Azure-Ressourcen verwenden (kein Passwort mehr im Code)
CREATE USER [mein-app-mi] FROM EXTERNAL PROVIDER;
GRANT SELECT, INSERT, UPDATE ON Vertriebsdaten TO [mein-app-mi];
-- 3. Überprüfung der Always Encrypted‑Eignung für Spalten (Assessment)
SELECT schema_name(schema_id) AS schema_name,
name AS table_name
FROM sys.tables
WHERE is_enable_encryption_possible = 1;
📚 Kurzreferenz: Neue T‑SQL‑Elemente auf einen Blick
-- Datentypen
VECTOR(n) · JSON
-- Aggregat- und Skalarfunktionen
PRODUCT() · CURRENT_DATE · DATEADD(bigint) · STRING_CONCAT_WS
BASE64_ENCODE · BASE64_DECODE · STRING_SIMILARITY · EDIT_DISTANCE · JARO_WINKLER_SIMILARITY
JSON_ARRAYAGG · JSON_OBJECTAGG · UNISTR
-- RegEx-Funktionen
REGEXP_LIKE · REGEXP_COUNT · REGEXP_INSTR · REGEXP_REPLACE · REGEXP_SUBSTR
REGEXP_MATCHES · REGEXP_SPLIT_TO_TABLE
-- KI & Vektoren (Auswahl)
AI_GENERATE_EMBEDDINGS VECTOR_DISTANCE CREATE VECTOR INDEX
AI_GENERATE_CHUNKS VECTOR_NORM CREATE EXTERNAL MODEL
AI_GENERATE_SUMMARY VECTOR_NORMALIZE VECTOR_SEARCH
-- Operatoren
|| (für Stringkonkatenation)
. (für JSON-Punktnotation auf JSON‑Typ)
-- REST & Event Streaming (gespeicherte Prozeduren & Funktionen)
sp_invoke_external_rest_endpoint · sys.sp_cdc_stream_enable (CES)
✅ Fazit: SQL Server 2025 ist die bisher modernste Version – mit Deep-AI‑Integration, lang erwarteten Sprachfeatures und einer durchdachten Lizenzstrategie. Nutzen Sie die kostenlose Developer Edition, um sich frühzeitig mit den neuen Möglichkeiten vertraut zu machen.