Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Obtém informações de erro de automação OLE.
Transact-SQL convenções de sintaxe
Sintaxe
sp_OAGetErrorInfo [ objecttoken ]
[ , source OUTPUT ]
[ , description OUTPUT ]
[ , helpfile OUTPUT ]
[ , helpid OUTPUT ]
[ ; ]
Argumentos
Importante
Os argumentos para procedimentos armazenados estendidos devem ser inseridos na ordem específica, conforme descrito na seção de sintaxe. Se os parâmetros forem inseridos fora de ordem, ocorrerá uma mensagem de erro.
objecttoken
O token de objeto de um objeto OLE que foi criado anteriormente usando sp_OACreateou NULL. Se objecttoken for especificado, as informações de erro desse objeto serão retornadas. Se NULL for especificado, as informações de erro para todo o lote serão retornadas.
fonte SAÍDA
A fonte das informações de erro. Se especificado, deve ser um dechar local, nchar, varcharou nvarchar variável. O valor de retorno é truncado para ajustar a variável local, se necessário.
descrição SAÍDA
A descrição do erro. Se especificado, deve ser um dechar local, nchar, varcharou nvarchar variável. O valor de retorno é truncado para ajustar a variável local, se necessário.
HELPFILE SAÍDA
O arquivo de ajuda para o objeto OLE. Se especificado, deve ser um dechar local, nchar, varcharou nvarchar variável. O valor de retorno é truncado para ajustar a variável local, se necessário.
SAÍDA HELPID
O ID de contexto do arquivo de ajuda. Se especificado, deve ser uma variável local int.
Observação
Os parâmetros para este procedimento armazenado são especificados por posição, não por nome.
Valores de código de retorno
0 (êxito) ou um número diferente de zero (falha) que é o valor inteiro do HRESULT retornado pelo objeto de automação OLE.
Para obter mais informações sobre códigos de retorno HRESULT, consulte códigos de retorno de automação OLE e informações de erro.
Conjunto de resultados
Se nenhum parâmetro de saída for especificado, as informações de erro serão retornadas ao cliente como um conjunto de resultados.
| Nome da coluna | Tipo de dados | Descrição |
|---|---|---|
Error |
binário(4) | Representação binária do número do erro. |
Source |
nvarchar(nn) | Origem do erro. |
Description |
nvarchar(nn) | Descrição do erro. |
Helpfile |
nvarchar(nn) | Arquivo de ajuda para a fonte. |
HelpID |
int | ID de contexto da Ajuda no arquivo de origem da Ajuda. |
Comentários
Cada chamada para um procedimento armazenado de automação OLE (exceto sp_OAGetErrorInfo) redefine as informações de erro; portanto, sp_OAGetErrorInfo obtém informações de erro somente para a chamada de procedimento armazenado de automação OLE mais recente. Como sp_OAGetErrorInfo não redefine as informações de erro, ele pode ser chamado várias vezes para obter as mesmas informações de erro.
A tabela a seguir lista erros de automação OLE e suas causas comuns.
| Erro e HRESULT | Causa comum |
|---|---|
| Tipo de variável incorreta (0x80020008) | O tipo de dados de um valor de Transact-SQL passado como um parâmetro de método não correspondia ao tipo de dados do Microsoft Visual Basic do parâmetro de método ou um valor de NULL foi passado como um parâmetro de método. |
| Nome desconhecido (0x8002006) | A propriedade especificada ou o nome do método não foi encontrado para o objeto especificado. |
| String de classe inválida (0x800401f3) | ProgID ou CLSID especificado não está registrado como um objeto OLE em uma instância do SQL Server. Os servidores de automação OLE personalizados devem ser registrados antes de poderem ser instanciados usando sp_OACreate. Você pode registrar servidores usando o utilitário Regsvr32.exe para servidores em processo (.dll) ou a opção de linha de comando /REGSERVER para servidores locais (.exe). |
| Falha na execução do Server (0x80080005) | O objeto OLE especificado está registrado como um servidor OLE local (arquivo.exe), mas o arquivo .exe não pôde ser encontrado ou iniciado. |
| O módulo especificado não pôde ser encontrado (0x8007007e) | O objeto OLE especificado é registrado como um servidor OLE em processo (arquivo.dll), mas o arquivo .dll não pôde ser encontrado ou carregado. |
| Incompatibilidade de tipo (0x80020005) | O tipo de dados de uma variável local Transact-SQL usada para armazenar um valor de propriedade retornado ou um valor de retorno de método não correspondeu ao tipo de dados do Visual Basic da propriedade ou do valor de retorno do método. Ou, o valor de retorno de uma propriedade ou um método foi solicitado, mas não retorna um valor. |
O tipo de dados ou valor do parâmetro 'context' de sp_OACreate é inválido. (0x8004275B) |
O valor do parâmetro context deve ser um de: 1, 4 ou 5. |
Para obter mais informações sobre como processar códigos de retorno HRESULT, consulte códigos de retorno de automação OLE e informações de erro.
Permissões
Requer associação ao sysadmin função de servidor fixa ou permissão de execução diretamente neste procedimento armazenado. A opção Ole Automation Procedures configuração do servidor deve ser habilitada para usar qualquer procedimento do sistema relacionado à automação OLE.
Exemplos
O exemplo a seguir exibe informações de erro de automação OLE.
DECLARE @output AS VARCHAR (255);
DECLARE @hr AS INT;
DECLARE @source AS VARCHAR (255);
DECLARE @description AS VARCHAR (255);
PRINT 'OLE Automation Error Information';
EXECUTE
@hr = sp_OAGetErrorInfo
@object,
@source OUTPUT,
@description OUTPUT;
IF @hr = 0
BEGIN
SELECT @output = ' Source: ' + @source;
PRINT @output;
SELECT @output = ' Description: ' + @description;
PRINT @output;
END
ELSE
BEGIN
PRINT ' sp_OAGetErrorInfo failed.';
RETURN;
END