2009-05-28 2 views
2

es ist ein bisschen lang, seit ich einige Nachforschungen gemacht habe und meine "Befunde" aber die Frage istWie komme ich in C#/vb.net - die Nachrichten von raiserror Befehl (sqlserver) während der Ausführung einer gespeicherten Prozedur zurückgegeben

ich muss laufen eine sehr große gespeicherte Prozedur, die 30 Minuten dauert über

es hat: nur 2 Linien und fett gedruckt ...

ich habe überall und ich bin gestapelt zwischen C# und SQL_SERVER gesucht Schritte und ich möchte dem dot.net mitteilen, auf welchem ​​Schritt der SP gerade arbeitet ... eine Art Statusbericht.

von der SQL_SERVER Seite Ich glaube, ich habe es .. RAISERROR (‚HALLO WELT.‘, 10, 1) mit nowait

wenn der Fehlerpegel ist weniger als 11 es eine Warnung ist, wenn der Fehler Level ist zwischen 11-19 ist eine Ausnahme, die behandelt werden kann wenn die Fehlerstufe ist größer als 19 ist es ein "fataler" Fehler beim Schließen der Verbindung Warnung

So verwende ich 10 - ich möchte eine Warnung senden - Das wird den Lauf nicht verpassen.

auf der .NET-Seite Ich bin verloren ... las ich über Threading, über RPC, über Veranstaltungen und sogar ... über ein Flag für Rahmen über 1,0

I einen kompletten Code müssen mit komplette Einstellungen, die den folgenden Job zu erledigen: Anruf eine gespeicherte Prozedur und während der Ausführung können sie sich Status (während - nicht nach !!!)

ich denke, dass die besten verwandten Informationen, die ich habe, so weit ist: geekswithblogs. net/mrnat/archive/2004/09/20/11431.aspx

www.eggheadcafe.com/forumarchives/NETFrameworkADONET/Nov2005/post24657346.asp

www.dotnet247.com/247reference/msgs/54/273728.aspx

msdn.microsoft.com/en-us/ Bibliothek/ms178592.aspx

www.devnewsgroups.net/group/microsoft.public.dotnet.framework.adonet/topic37218.aspx

Wenn Sie ein funktionierendes Beispiel geben oder zu einem Projekt in einer Website verweisen mich wie (stackoverflow/codeproject etc.) eines SP, der "Hello World" zurückgibt - während der Ausführung eines SP bin ich so dankbar - gerade jetzt Ich bin auf die Schaltfläche klicken und beten ... und ich ziehe wirklich die Illusion von Kontrolle zu haben :)

Dank Und sorry für die Geschichte

Antwort

1

Erstellen Sie eine Tabelle, die die aktuelle Schrittnummer Ihres Prozesses speichert und lassen Sie Ihren Prozess diese Tabelle bei jedem Schritt schreiben. Dann können Sie entweder den 'aktuellen Schritt' abfragen oder eine SQLCacheDependency setzen.

+1

+1 genau das, was mir eingefallen ist. Da der Proc jedoch in definierten "Schritten" zu funktionieren scheint, vermute ich, dass er in mehrere kleinere Procs aufgeteilt werden könnte und sollte. –

+0

Breaking es in kleinere procs ist auch eine gute Idee, weil jeder proc (Batch) bekommt seinen eigenen Abfrageplan. –

0

Alles, was Sie brauchen, ist SqlException dann fangen Sie

  1. Linenumber

  2. Nummer (Fehlernummer [10 in Ihrem Fall]) (auf dem Fehler in der SP aufgetreten) haben

  3. Procedure (Name der gespeicherte Prozedur, die den Fehler verursacht hat)

  4. Staat

  5. SqlErrorCollection Objekt

und viele andere Leckereien !!

EDIT: - OOPS das wird dir nicht direkt helfen du hast andere Anforderungen.

Verwandte Themen