Partilhar via


Detalhes do erro do SQL Server

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

Há duas maneiras de obter acesso à interface ISQLServerErrorInfo .

O consumidor pode chamar IErrorRecords::GetCustomerErrorObject para obter um ponteiro ISQLServerErrorInfo , conforme mostrado no exemplo de código a seguir. (Não é necessário obter ISQLErrorInfo.) IsQLErrorInfo e 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 nome do procedimento e números de linha.

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

Outra maneira de obter um ponteiro ISQLServerErrorInfo é chamar o método QueryInterface em um ponteiro ISQLErrorInfo já obtido. Observe que, como ISQLServerErrorInfo contém um superconjunto das informações disponíveis no ISQLErrorInfo, faz sentido ir diretamente para ISQLServerErrorInfo por meio de GetCustomerErrorObject.

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

Os membros da estrutura SSERRORINFO são interpretados pelo consumidor da seguinte maneira.

Membro Descrição
pwszMessage Mensagem de erro do SQL Server. Idêntico à cadeia de caracteres retornada em IErrorInfo::GetDescription.
pwszServer Nome da instância do SQL Server para a sessão.
pwszProcedure Se apropriado, o nome do procedimento no qual o erro se originou. Caso contrário, uma cadeia de caracteres vazia.
LNative Número de erro nativo do SQL Server. Idêntico ao valor retornado no parâmetro plNativeError de ISQLErrorInfo::GetSQLInfo.
bState Estado de uma mensagem de erro do SQL Server.
bClass Severidade de uma mensagem de erro do SQL Server.
wLineNumber Quando aplicável, o número de linha de um procedimento armazenado no qual o erro ocorreu.

Consulte Também

Erros
RAISERROR (Transact-SQL)