Compartilhar via


Detalhes de erros do SQL Server

O provedor OLE DB do SQL Server Native Client define a interface de erro específica de provedor ISQLServerErrorInfo. A interface retorna mais detalhes sobre um erro do SQL Server e é valiosa em caso de falha na execução de comandos ou em operações do conjunto de linhas.

Há dois modos de obter acesso à interface ISQLServerErrorInfo.

O consumidor pode chamar IErrorRecords::GetCustomerErrorObject para obter um ponteiro ISQLServerErrorInfo, como mostrado no exemplo de código a seguir. (Não há necessidade de obter ISQLErrorInfo.) Tanto ISQLErrorInfo quanto ISQLServerErrorInfo são objetos de erro OLE DB personalizados, com ISQLServerErrorInfo sendo a interface a ser usada para obter informações de erros do servidor, incluindo detalhes como nomes de procedimento e números de linha.

// Get the SQL Server custom error object.
if(FAILED(hr=pIErrorRecords->GetCustomErrorObject(
   nRec, IID_ISQLServerErrorInfo,
   (IUnknown**)&pISQLServerErrorErrorInfo)))

Outro modo de obter um ponteiro ISQLServerErrorInfo é chamar o método QueryInterface em um ponteiro ISQLErrorInfo já obtido. Observe que pelo fato de ISQLServerErrorInfo conter um superconjunto das informações disponíveis de ISQLErrorInfo, faz sentido passar diretamente para ISQLServerErrorInfo através de GetCustomerErrorObject.

A interface ISQLServerErrorInfo expõe uma função de membro, ISQLServerErrorInfo::GetErrorInfo. A função retorna um ponteiro para uma estrutura SSERRORINFO e um ponteiro para um buffer de cadeia de caracteres. A memória de referência de ambos os ponteiros deve ser desalocada pelo consumidor usando o método IMalloc::Free.

Os membros da estrutura SSERRORINFO são interpretados pelo consumidor como a seguir.

Membro

Descrição

pwszMessage

Mensagem de erro do SQL Server. Idêntico à cadeia de caracteres retornada em IErrorInfo::GetDescription.

pwszServer

O nome da instância do SQL Server para a sessão.

pwszProcedure

Se apropriado, o nome do procedimento no qual o erro foi originado. Uma cadeia de caracteres vazia caso contrário.

lNative

O número do erro nativo do SQL Server. Idêntico ao valor retornado no parâmetro plNativeError de ISQLErrorInfo::GetSQLInfo.

bState

O estado de uma mensagem de erro do SQL Server.

bClass

A severidade de uma mensagem de erro do SQL Server.

wLineNumber

Quando aplicável, o número da linha de um procedimento armazenado no qual o erro ocorreu.

Consulte também

Referência

RAISERROR (Transact-SQL)

Conceitos

Erros