2009-05-28 4 views
2

c'est un peu long depuis que j'ai fait des recherches et enregistré mes "résultats" mais la question est seulement 2 lignes et ...Comment obtenir dans C#/vb.net -les messages retournés par la commande raiserror (sqlserver) pendant l'exécution d'une procédure stockée

gras

J'ai cherché partout et je suis empilés entre C# et SQL_SERVER:

je dois exécuter une procédure très grande stockée qui prend plus de 30 minutes

il a étapes et je veux informer le point.net sur quelle étape le SP fonctionne maintenant ... une sorte de rapport d'état.

du côté SQL_SERVER je pense que je l'ai .. RAISERROR (« BONJOUR. », 10, 1) avec nowait

lorsque le niveau d'erreur est inférieure à 11, il est un avertissement lorsque l'erreur le niveau se situe entre 11-19 il est une exception qui peut être traitée lorsque le niveau d'erreur est supérieure à 19, il est une erreur « fatale » fermer la connexion avertissement

J'utiliser 10 - Je veux envoyer un avertissement - cela n'échouera pas la course.

Du côté .net je suis perdu ... Je lu sur le threading, à propos de RPC, sur les événements et même ... d'un drapeau pour cadre supérieur à 1,0

Je besoin d'un code complet paramètres complets qui obtiennent le travail suivant fait: Appel d'une procédure stockée et en exécuter un rapport état (tout - pas après !!!)

Je pense que je suis arrivé à ce jour les informations connexes est le meilleur: 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/ bibliothèque/ms178592.aspx

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

Si vous pouvez donner un exemple de travail ou me référer à un projet dans un site comme (stackoverflow/codeproject etc.) d'un SP qui renvoie "Hello World" - pendant l'exécution d'un SP, je serai tellement reconnaissant - en ce moment Je cliquant sur le bouton et prier ... et je préfère vraiment l'illusion d'être dans le contrôle :)

Merci Et désolé pour l'histoire

Répondre

1

Créer une table qui stocke le numéro de l'étape actuelle de votre processus et demandez à votre processus d'écrire cette table à chaque étape. Vous pouvez ensuite interroger l''étape actuelle' ou définir une SQLCacheDependency.

+1

+1 exactement ce qui m'est arrivé. Cependant, puisque le processus semble fonctionner dans des «étapes» définies, je soupçonne qu'il pourrait et devrait être décomposé en plusieurs processus plus petits. –

+0

Il est également judicieux de la décomposer en procs plus petits, car chaque proc (batch) aura son propre plan de requête. –

0

Tout ce que vous avez besoin est d'attraper SqlException alors vous pouvez avoir

  1. LineNumber (sur laquelle erreur est survenue dans votre SP)

  2. Numéro (Numéro d'erreur [10 dans votre cas])

  3. procédure (Nom de la procédure stockée qui a causé l'erreur)

  4. Etat

  5. objet SqlErrorCollection

et bien d'autres goodies !!

EDIT: - OOPS cela ne vous aidera pas directement, vous avez des exigences différentes.

Questions connexes