Pergunta

Estamos usando SQL 2005 e a funcionalidade try-catch para lidar com todo o nosso tratamento de erros dentro do DB. Estamos actualmente a trabalhar na implantação de uma função .NET CLR para fazer algumas chamadas WCF no DB. Este procedimento WCF está escrito na CLR e depois implantado em SQL. Se eu colocar um bloco try-catch no código CLR, ele pega a multa erro. No entanto, eu não consigo jogar o erro até o bloco try-catch em SQL. SQL parece ignorar o que eu jogá-lo e captura o erro que encontra. Será que não há relação entre os dois (ou seja, eu não posso jogar de um para outro?)

Se eu posso jogar a partir do CLR para o procedimento de chamada em SQL, é qualquer especial formatação necessária? Eu tentei um caso específico de pegar o erro que foi lançada, em seguida, jogando um erro diferente, mas SQL ignorou o meu erro lançado e pegou o erro original, como se ignorou o erro lançado.

Foi útil?

Solução

Aqui está um blog que cobre a nível highish: a manipulação de exceção em SQLCLR

Quando o servidor SQL executar uma função de usuário / procedimento / gatilho implementado em CLR (ou seja, o código gerenciado), vamos instalar um manipulador de exceção gerenciada em torno do código do usuário. Então, se o código de utilizador vazou uma exceção, o servidor irá pegá-lo e lançar uma exceção TSQL envolvendo a exceção usuário.

Isto parece implicar que ele vai funcionar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top