Detalhes de erros do SQL Server
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)
O Driver do OLE DB para SQL Server define a interface de erro específica do 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, conforme mostrado no exemplo de código a seguir. (Não há necessidade de obter ISQLErrorInfo). ISQLErrorInfo e ISQLServerErrorInfo são objetos de erro personalizados do OLE DB, com ISQLServerErrorInfo sendo a interface a ser usada para obter informações de erros do servidor, incluindo detalhes como nome 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 por meio 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. Ambos os ponteiros referenciam a memória que precisa 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. |