C# CLR Programmierung für MS SQL 2008

roker002

Commander
Registriert
Dez. 2007
Beiträge
2.075
Ich habe ein Problem. Ich versuche eine Exception in meine DLL abzufangen und die exakte Fehlernachricht an den SQL Server weitergeben, anstatt mit dem Stacktrace von MS SQL weiter zu machen.

Code:
try
{
   ///UPS Fehler!
}
catch (Exception e)
{
    using (var cmd = new SqlCommand(String.Concat("RAISERROR('12321321123', 16, 1)")))
    {
        if (Microsoft.SqlServer.Server.SqlContext.IsAvailable == true)
            Microsoft.SqlServer.Server.SqlContext.Pipe.ExecuteAndSend(cmd);
    }
}

Wieso wird die eigentliche Exception und RAISERROR ausgegeben?
Hm es sollte eigentlich kein UnhandledException geraised werden. Und wenn doch, wie kann ich das verhindern?
 
Welche Art von Exception ? Könnte die auch von Microsoft.SqlServer.Server.SqlContext.Pipe.ExecuteAndSend(cmd) gekommen sein?
 
ich habe noch einmal getestet....

Es hat sich herausgestellt dass RAISERROR aus der CMD eine SqlException auslöst oder wandelt diese in SqlException um. Ab der Severity 11 kann man alle Errors abfangen aber alles was drunter ist wird ignoriert.

Was für mich wichtig wäre, ich würde gerne eine ERRORMESSAGE mit dem Text '12321321123' bekommen und nicht mit

A .NET Framework error occurred during execution of user-defined routine or aggregate .....

Lässt sich das irgend wie machen?
 
Zurück
Oben