Warum ich ONNX im SQL Server nutze
KI-Modelle in Python entwickeln ist relativ einfach.
Aber produktiv nutzen? Im Backend, in Reports, in Echtzeit?
SQL Server 2025 kann nun ONNX direkt ausführen.
Damit bleibt das Modell, wo die Daten sind.
Kein Export, kein Hin und Her, keine Middleware.
1. Was ONNX ist
ONNX = Open Neural Network Exchange.
Ein offenes Format für Machine-Learning-Modelle.
Wird unterstützt von:
- PyTorch
- scikit-learn
- Azure Machine Learning
- Keras (über Umwege)
Du exportierst Dein Modell aus Python und importierst es in SQL Server.
Fertig.
2. Voraussetzungen prüfen
SQL Server 2025 braucht:
Extensibility Framework
aktiviertMachine Learning Services
installiert (für Inference)- Rolle
db_owner
oderexternal script enabled
EXEC sp_configure 'external scripts enabled', 1;
RECONFIGURE;
Optional GPU-Support mit MicrosoftML
+ CUDA.
Für KMU reicht meist CPU.
3. ONNX-Modell in SQL Server einbinden
Modell speichern
CREATE MODEL dbo.KundenScoring
FROM (SELECT * FROM OPENROWSET(BULK N'C:\Modelle\scoring.onnx', SINGLE_BLOB) AS model_data)
WITH (FORMAT = 'ONNX');
Das Modell liegt jetzt als Objekt im SQL Server.
Ähnlich wie ein View oder eine Stored Procedure.
4. Daten vorbereiten
ONNX will strukturierte Eingaben – FLOAT
, INT
, keine NULLs.
Beispiel: Kundendaten für Churn Prediction
SELECT
CAST(alter AS FLOAT) AS age,
CAST(monatsumsatz AS FLOAT) AS revenue,
CAST(anzahl_logins AS FLOAT) AS logins
FROM dbo.kunden
WHERE status = 'aktiv';
Optional: View anlegen mit genau dieser Struktur.
5. Modell ausführen mit PREDICT
SELECT
k.kundennr,
PREDICT(MODEL = dbo.KundenScoring,
DATA =
(SELECT
CAST(k.alter AS FLOAT) AS age,
CAST(k.monatsumsatz AS FLOAT) AS revenue,
CAST(k.anzahl_logins AS FLOAT) AS logins)
) AS score
FROM dbo.kunden k
WHERE k.status = 'aktiv';
Der Score kommt als FLOAT
zurück – z. B. 0.92 für hohe Churn-Wahrscheinlichkeit.
Kannst Du in Reports, Triggern oder Alert-Logiken weiterverarbeiten.
6. Modell regelmäßig aktualisieren
Neue Trainingsdaten → Modell in Python neu trainieren → ONNX exportieren → SQL-Modell ersetzen:
DROP MODEL dbo.KundenScoring;
CREATE MODEL dbo.KundenScoring
FROM (SELECT * FROM OPENROWSET(BULK N'C:\Modelle\neues_model.onnx', SINGLE_BLOB) AS model_data)
WITH (FORMAT = 'ONNX');
Du kannst das sogar automatisieren – z. B. nachts per SQL Job + FileShare.
7. Beispiel: Score in Tabelle schreiben
INSERT INTO dbo.kunden_scores (kundennr, score, berechnet_am)
SELECT
k.kundennr,
PREDICT(MODEL = dbo.KundenScoring,
DATA = (SELECT
CAST(k.alter AS FLOAT),
CAST(k.monatsumsatz AS FLOAT),
CAST(k.anzahl_logins AS FLOAT))) AS score,
GETDATE()
FROM dbo.kunden k
WHERE k.status = 'aktiv';
Jetzt kannst Du per SQL gezielt z. B. „Top 50 risikoreiche Kunden“ abrufen.
Ohne Python. Ohne REST. Ohne Zwischenlayer.
8. Sicherheit & Berechtigungen
Nur Nutzer mit EXECUTE
auf das Modell dürfen PREDICT()
nutzen:
GRANT EXECUTE ON MODEL::dbo.KundenScoring TO support_user;
Das trennt Entwicklung (Python) und Anwendung (SQL-User).
9. Debuggen und testen
Modell-Infos abrufen:
SELECT * FROM sys.models WHERE name = 'KundenScoring';
Modellstruktur prüfen (ab 2025):
SELECT * FROM sys.dm_model_metadata WHERE model_name = 'KundenScoring';
Testwerte vorab prüfen:
SELECT PREDICT(MODEL = dbo.KundenScoring,
DATA = (VALUES (30.0, 120.0, 12.0))
AS T(age, revenue, logins)) AS score;
Hilft bei Strukturfehlern oder Datentypproblemen.
Mein Fazit
Mit ONNX sparst Du Dir REST-APIs, Python-Skripte im Produktivsystem, Datenexports.
Die KI kommt zur Datenbank – nicht umgekehrt.
Und SQL Server 2025 macht das jetzt angenehm direkt.
Keine Antworten