Domanda

Stiamo usando SQL 2005 e la funzionalità try-catch per gestire tutta la nostra gestione degli errori all'interno del DB. Attualmente stiamo lavorando alla distribuzione di una funzione CLR .NET per effettuare alcune chiamate WCF nel DB. Questa procedura WCF è scritta nel CLR e quindi distribuita a SQL. Se inserisco un blocco try-catch nel codice CLR, viene rilevato l'errore correttamente. Tuttavia, non riesco a gettare l'errore fino al blocco try-catch in SQL. SQL sembra ignorare ciò che lo lancio e rileva l'errore che trova. Non c'è alcuna relazione tra i due (cioè non riesco a lanciare l'uno dall'altro?)

Se posso passare dall'interno del CLR alla procedura di chiamata in SQL, è necessaria una formattazione speciale? Ho provato un caso specifico di rilevare l'errore generato e quindi di generare un errore diverso, ma SQL ha ignorato l'errore generato e rilevato l'errore originale, come se ignorasse l'errore generato.

È stato utile?

Soluzione

Ecco un post sul blog che lo copre a un livello elevato: Gestione delle eccezioni in SQLCLR

  

Quando il server SQL esegue una funzione / procedura / trigger implementata in CLR (ovvero, codice gestito), installeremo un gestore di eccezioni gestito attorno al codice utente. Quindi, se il codice utente trapelasse un'eccezione, il server lo catturerà e genererà un'eccezione TSQL che racchiude l'eccezione utente.

Questo sembra implicare che funzionerà.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top