Question

Nous utilisons SQL 2005 et la fonctionnalité try-catch pour gérer toutes nos erreurs de traitement dans la base de données. Nous travaillons actuellement sur le déploiement d'une fonction CLR .NET pour effectuer des appels WCF dans la base de données. Cette procédure WCF est écrite dans le CLR, puis déployée en SQL. Si je mets un bloc try-catch dans le code CLR, cela corrige l'erreur correctement. Cependant, je n'arrive pas à jeter l'erreur au bloc try-catch en SQL. SQL semble ignorer ce que je jette et intercepte l'erreur qu'il trouve. N'y a-t-il aucune relation entre les deux (c'est-à-dire que je ne peux pas passer de l'un à l'autre?)

Si je peux lancer depuis le CLR jusqu'à la procédure d'appel en SQL, une mise en forme spéciale est-elle nécessaire? J’ai essayé de capturer l’erreur renvoyée, puis de lancer une erreur différente, mais SQL a ignoré mon erreur émise et a intercepté l’erreur initiale, comme si elle l’ignorait.

Était-ce utile?

La solution

Voici un article de blog qui le couvre à un niveau élevé: Gestion des exceptions dans SQLCLR

  

Lorsque le serveur SQL exécute une fonction / procédure / déclencheur implémenté dans CLR (code géré), nous allons installer un gestionnaire d’exceptions géré autour du code utilisateur. Donc, si le code utilisateur a fait fuir une exception, le serveur l’attrapera et lèvera une exception TSQL qui encapsulera l’exception utilisateur.

Cela semble impliquer que cela fonctionnera simplement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top