2008-09-23 7 views
3

Nous utilisons SQL 2005 et la fonctionnalité try-catch pour gérer toutes nos erreurs de gestion dans la base de données. Nous travaillons actuellement sur le déploiement d'une fonction .NET CLR pour effectuer des appels WCF dans la base de données. Cette procédure WCF est écrite dans le CLR, puis déployée dans SQL. Si je mets un bloc try-catch dans le code CLR, il attrape l'erreur. Cependant, je ne peux pas donner l'erreur au bloc try-catch dans SQL. SQL semble ignorer ce que je le lance et attrape l'erreur qu'il trouve. N'y a-t-il pas de relation entre les deux (ie je ne peux pas passer de l'un à l'autre?)Les blocs SQL Try-Catch peuvent-ils gérer les erreurs CLR générées?

Si je peux passer de l'intérieur du CLR à la procédure d'appel en SQL, est-ce qu'une mise en forme spéciale est nécessaire? J'ai essayé un cas spécifique d'attraper l'erreur qui a été jetée, puis en lançant une erreur différente, mais SQL a ignoré mon erreur lancée et a détecté l'erreur d'origine, comme si elle ignorait l'erreur lancée.

Répondre

2

Voici un blog qui couvre à un niveau highish: Exception handling in SQLCLR

Lorsque le serveur SQL exécute une fonction utilisateur/procédure/déclencheur mis en œuvre CLR (c.-à-code managé), nous allons installer un géré gestionnaire d'exception autour du code de l'utilisateur. Ainsi, si le code utilisateur a provoqué une exception, le serveur l'attrapera et lèvera une exception TSQL enveloppant l'exception de l'utilisateur.

Cela semble impliquer que cela va juste fonctionner.

Questions connexes