Partilhar via


Detalhes do erro do SQL Server

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Base de dados SQL no Microsoft Fabric

Baixar driver OLE DB

O Driver OLE DB para SQL Server define a interface de erro específica do fornecedor, ISQLServerErrorInfo. A interface devolve mais detalhes sobre um erro do SQL Server e é valiosa quando a execução de comandos ou operações de rowset falham.

Existem duas formas de obter acesso à interface ISQLServerErrorInfo .

O consumidor pode chamar IErrorRecords::GetCustomerErrorObject para obter um ponteiro ISQLServerErrorInfo , conforme mostrado no seguinte exemplo de código. (Não é necessário obter ISQLErrorInfo.) Tanto ISQLErrorInfo como ISQLServerErrorInfo são objetos de erro personalizados do OLE DB, sendo ISQLServerErrorInfo a interface para obter informações sobre 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 forma de obter um ponteiro ISQLServerErrorInfo é chamar o método QueryInterface num ponteiro ISQLErrorInfo já obtido. Note que, como o ISQLServerErrorInfo contém um superconjunto da informação disponível do ISQLErrorInfo, faz sentido ir diretamente ao ISQLServerErrorInfo através do GetCustomerErrorObject.

A interface ISQLServerErrorInfo expõe uma função membro, ISQLServerErrorInfo::GetErrorInfo. A função devolve um ponteiro para uma estrutura SSERRORINFO e um ponteiro para um buffer de string. Ambos os ponteiros referenciam a 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 forma.

Membro Description
pwszMessage Mensagem de erro do SQL Server. Idêntico à string devolvida em IErrorInfo::GetDescription.
pwszServer Nome da instância do SQL Server para a sessão.
pwszProcedimento Se apropriado, o nome do procedimento em que o erro se originou. Caso contrário, um fio vazio.
Nativo Número de erro nativo do SQL Server. Idêntico ao valor devolvido no parâmetro plNativeError do ISQLErrorInfo::GetSQLInfo.
bEstado Estado de uma mensagem de erro do SQL Server.
Classe b Gravidade de uma mensagem de erro do SQL Server.
wNúmero de Linha Quando aplicável, o número de linha de um procedimento armazenado onde ocorreu o erro.

Ver também

Erros
RAISERROR (Transact-SQL)