Compartilhar via


Manipulando erros e mensagens

Quando um aplicativo chama uma função ODBC, o driver executa a função e retorna informações de diagnóstico de duas maneiras: um código de retorno indica o sucesso geral ou a falha de uma função ODBC e os registros de diagnóstico fornecem informações detalhadas sobre a função. Os registros de diagnóstico incluem um registro de cabeçalho e registros de status. Pelo menos um registro de diagnóstico, o registro de cabeçalho, será retornado mesmo se a função tiver êxito.

As informações de diagnóstico são usadas no momento do desenvolvimento para capturar erros de programação, como identificadores inválidos e erros de sintaxe em instruções SQL codificadas. Ele também é usado em tempo de execução para detectar erros e avisos em tempo de execução, como truncamento de dados, violações de regra e erros de sintaxe em instruções SQL inseridas pelo usuário. A lógica do programa geralmente é baseada em códigos de retorno.

Por exemplo, depois que um aplicativo chama SQLFetch para recuperar as linhas em um conjunto de resultados, o código de retorno indica se o final do conjunto de resultados foi atingido (SQL_NO_DATA), se alguma mensagem informativa foi retornada (SQL_SUCCESS_WITH_INFO) ou se ocorreu um erro (SQL_ERROR).

Se o driver ODBC do SQL Server Native Client retornar algo diferente de SQL_SUCCESS, o aplicativo poderá chamar SQLGetDiagRec para recuperar mensagens informativas ou de erro. Use SQLGetDiagRec para rolar para cima e para baixo no conjunto de mensagens se houver mais de uma mensagem.

O código de retorno SQL_INVALID_HANDLE sempre indica um erro de programação e nunca deve ser encontrado em tempo de execução. Todos os outros códigos de retorno fornecem informações de tempo de execução, embora SQL_ERROR possa indicar um erro de programação.

A API nativa do Microsoft SQL Server original, DB-Library para C, permite que um aplicativo instale funções de tratamento de erros e tratamento de mensagens de retorno de chamada que retornam erros ou mensagens. Algumas instruções Transact-SQL, como PRINT, RAISERROR, DBCC e SET, retornam seus resultados para a função DB-Library manipulador de mensagens em vez de um conjunto de resultados. No entanto, a API ODBC não tem esse recurso de retorno de chamada. Quando o driver ODBC do SQL Server Native Client detecta mensagens retornadas do SQL Server, ele define o código de retorno ODBC como SQL_SUCCESS_WITH_INFO ou SQL_ERROR e retorna a mensagem como um ou mais registros de diagnóstico. Portanto, um aplicativo ODBC deve testar cuidadosamente esses códigos de retorno e chamar SQLGetDiagRec para recuperar dados de mensagem.

Para obter informações sobre erros de rastreamento, consulte Rastreamento de Acesso a Dados. Para obter informações sobre aprimoramentos no rastreamento de erros adicionados no SQL Server 2012, consulte Acessando informações de diagnóstico no log de eventos estendidos.

Nesta seção

Consulte Também

SQL Server Native Client (ODBC)