SQL Server Developer Center >
SQL Server Foren
>
SQL Server Express
>
Serverseitige Funktion mit .NET CLR
Serverseitige Funktion mit .NET CLR
- Hallo,
ich habe mit .NET und C# eine Funktion geschrieben, welche auf dem SQL Server ausgeführt wird. Soweit ist alles kein Problem (Debuggen, Ausführen, alles klappt bestens). Nun möchte ich in dieser Funktion in bestimmten Situationen einen Eintrag in eine Tabelle machen. Leider bricht die Verarbeitung des INSERT Befehls immer mit Fehler ab.
Gibt es irgendwo ein Beispiel, wie man so was machen kann? Ich bin wirklich für jeden brauchbaren Hinweis dankbar.
Ich verwende SQL Server 2005 Express und das Management-Studio 2005 sowie Visual Studio 2005 und .NET Framework 2.0
Grüße
Uli
Antworten
- Hallo Uli,
Wenn es sich um eine SQL CLR Funktion (SqlFunctionAttribute) handelt,
so geht das wie bei TRANSACT-SQL Funktionen prinzipiell nicht.
Funktionen erweitern Abfragen (SELECT) und dort kann man nicht nebenbei Daten verändern.
Der Hintergrund ist die Transaktionssicherheit, die dann nicht (immer) gewährleistet werden könnte.
Handelt es sich um eine CLR Stored Procedure, so kannst Du dies über ein SqlCommand
und die Context Connection durchführen.
Siehe auch den Hinweiskasten bei Datenzugriff von CLR-Datenbankobjekten aus
Gruß Elmar- Als Antwort vorgeschlagenElmar BoyeMVPDonnerstag, 6. August 2009 10:12
- Als Antwort markiertRobert BreitenhoferMSFT, ModeratorFreitag, 21. August 2009 14:08
Alle Antworten
- Hallo Uli,
Wenn es sich um eine SQL CLR Funktion (SqlFunctionAttribute) handelt,
so geht das wie bei TRANSACT-SQL Funktionen prinzipiell nicht.
Funktionen erweitern Abfragen (SELECT) und dort kann man nicht nebenbei Daten verändern.
Der Hintergrund ist die Transaktionssicherheit, die dann nicht (immer) gewährleistet werden könnte.
Handelt es sich um eine CLR Stored Procedure, so kannst Du dies über ein SqlCommand
und die Context Connection durchführen.
Siehe auch den Hinweiskasten bei Datenzugriff von CLR-Datenbankobjekten aus
Gruß Elmar- Als Antwort vorgeschlagenElmar BoyeMVPDonnerstag, 6. August 2009 10:12
- Als Antwort markiertRobert BreitenhoferMSFT, ModeratorFreitag, 21. August 2009 14:08
- Hallo Elmar,danke für die Information. In der Zwischenzeit habe ich das selber herausgefunden (auf der Technet-Seite von Sql-Server habe ich einen entsprechenden Hinweis gefunden). Trotzdem vielen Dank für die Antwort.Gruß Uli


