MSSQLSERVER_7399

Aplica-se a:SQL Server

Atributo Valor
Product SQL Server
ID do evento 7399
Origem do Evento MSSQLSERVER
Componente SQLEngine
Nome simbólico RMT_HRESULT_FAIL
Texto da mensagem O provedor OLE DB "%ls" para o servidor vinculado "%ls" relatou um erro.%ls

Explicação

Esse erro ocorre quando uma consulta de servidor vinculado falha devido a um erro gerado no servidor remoto.

O erro 7399 é uma mensagem de erro genérica do provedor. Em alguns casos, você pode habilitar o Sinalizador de Rastreamento 7300 para obter uma mensagem de erro mais detalhada do provedor. Se você receber mais informações depende do provedor OLE DB (Object Linking and Embedding, Database) que você usa. Para habilitar o sinalizador de rastreamento, execute o seguinte comando antes de executar a consulta que causa o erro:

DBCC TRACEON (7300, 3604);

Ação do usuário

Embora o erro 7399 seja um erro genérico que inclui uma mensagem mais específica dentro dele, um erro específico comumente observado é "Tempo limite expirado". Há duas opções de tempo limite configuráveis que afetam as consultas remotas: opção de tempo limite de login remoto e opção de tempo limite de consulta remota. Aqui estão exemplos de como você pode ver o erro de tempo limite gerado no 7399 e como resolvê-lo:

IDBInitialize::Initialize

Servidor: Msg 7399, Nível 16, Estado 1, Linha 1 O provedor OLE DB 'SQLOLEDB' relatou um erro. [Mensagem retornada do provedor OLE/DB: Tempo limite expirado] Rastreamento de erro OLE DB [OLE/DB Provider 'SQLOLEDB' IDBInitialize::Initialize retornou 0x80004005: ].

Essa mensagem de erro pertence ao IDBInitialize::Initialize método. Isso ocorrerá se o tempo necessário pela consulta para estabelecer uma conexão com o servidor remoto exceder o valor da opção de tempo limite de logon remoto.

Para contornar esse erro, defina o valor de tempo limite de logon remoto para 30 segundos executando o seguinte código:

sp_configure 'remote login timeout', 30;
GO
RECONFIGURE WITH OVERRIDE;
GO

ICommandText::Executar

Servidor: Msg 7399, Nível 16, Estado 1, Linha 1 O provedor OLE DB 'SQLOLEDB' relatou um erro. Execução finalizada pelo provedor porque foi atingido o limite de um recurso. [Mensagem retornada do provedor OLE/DB: Tempo limite expirado] Rastreamento de erro OLE DB [OLE/DB Provider 'SQLOLEDB' ICommandText::Execute retornou 0x80040e31: Execução encerrada pelo provedor porque um limite de recursos foi atingido.].

Essa mensagem de erro pertence ao ICommandText::Execute método. Isso indica que a consulta levou mais tempo para ser processada do que o tempo especificado na definição de configuração de tempo limite de consulta remota.

O valor de tempo limite de consulta remota padrão é 600 (10 minutos).

Para contornar esse erro, desative o tempo limite definindo o valor de tempo limite de consulta remota para 0 (espera infinita) executando o seguinte código:

sp_configure 'remote query timeout', 0;
GO
RECONFIGURE WITH OVERRIDE;
GO