Als Entwickler im Enterprise-Umfeld interagiert man täglich mit Datenbanken und führt über eine Datenzugriffsschicht in seiner .NET-Anwendung Stored Procedures aus.
Diese Trennung zwischen Programmlogik in C#/.NET und den Stored Procedures (T-SQL) bringt allerdings das ein oder andere Mal auch Nachteile mit sich. So steht man häufig vor der Herausforderung, dass man als Entwickler die Berechnungsschritte einer Stored Procedure nachvollziehen möchte bzw. diese in seiner Anwendung loggen möchte, was z.B. für Debugging-Zwecke sehr hilfreich sein kann.
Bei direkter Ausführung einer Stored Procedure auf dem DB-Server kann man Ausgaben über die print-Anweisung erzeugen, z.B. mit “print 'Dies stellt ein Zwischenergebnis dar'
”. Diese Ausgabe lässt sich auch bei Verwendung einer SqlConnection
in C# behandeln. Dafür existiert auf der SqlConnection
das Event InfoMessage. Dieses wird immer dann ausgelöst, wenn eine print
-Ausgabe bei der Ausführung einer SP erfolgt. Der zweite Parameter des Events hat den Typ SqlInfoMessageEventArgs
und besitzt u.a. ein Property Message
, über das sich die Nachricht abfangen und behandeln lässt:
1: using(var conn = new SqlConnection(connString))
2: using(var cmd = new SqlCommand(SP_NAME, conn))
3: {
4: cmd.CommandType = CommandType.StoredProcedure;
5: conn.Open();
6:
7: // Event-Handler für print-Ausgaben registrieren
8: conn.InfoMessage += (s, msg) => Console.WriteLine(msg.Message);
9:
10: // SP ausführen und Ergebnisse verarbeiten
11: using(var reader = cmd.ExecuteReader())
12: // ...
13:
14: // ...
15: }
So ist es auf einfache Art und Weise möglich Ausgaben bei Ausführung einer Stored Procedure in seiner .NET-Anwendung abzufangen und darauf reagieren zu können.
Sie sehen gerade einen Platzhalterinhalt von Facebook. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Instagram. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen