Condividi tramite


MSSQLSERVER_7399

Si applica a: SQL Server

Attributo Valore
Prodotto SQL Server
ID evento 7399
Origine evento MSSQLSERVER
Componente SQLEngine
Nome simbolico RMT_HRESULT_FAIL
Testo del messaggio Il provider OLE DB "%ls" per il server collegato "%ls" ha segnalato un errore.%ls

Spiegazione

Questo errore si verifica quando una query del server collegato ha esito negativo a causa di un errore generato nel server remoto.

L'errore 7399 è un messaggio di errore generico del provider. In alcuni casi, è possibile abilitare il flag di traccia 7300 per ottenere un messaggio di errore più dettagliato dal provider. L'eventuale ricezione di altre informazioni dipende dal provider OLE DB (Object Linking and Embedding, Database) utilizzato. Per abilitare il flag di traccia, eseguire il comando seguente prima di eseguire la query che causa l'errore:

DBCC TRACEON (7300, 3604);

Azione utente

Anche se l'errore 7399 è un errore generico che include un messaggio più specifico al suo interno, un errore specifico comunemente osservato è "Timeout Scaduto". Sono disponibili due opzioni di timeout configurabili che influiscono sulle query remote: opzione remote login timeout e opzione remote query timeout . Ecco alcuni esempi di come viene visualizzato l'errore di timeout generato entro 7399 e come risolverlo:

IDBInitialize::Initialize

Server: msg 7399, livello 16, stato 1, riga 1 provider OLE DB 'SQLOLEDB' ha segnalato un errore. [Messaggio restituito dal provider OLE/DB: Timeout scaduto] Traccia degli errori OLE DB [Provider OLE/DB 'SQLOLEDB' IDBInitialize::Initialize restituito 0x80004005: ].

Questo messaggio di errore riguarda il IDBInitialize::Initialize metodo . Si verifica se il tempo impiegato dalla query per stabilire una connessione al server remoto supera il valore dell'opzione remote login timeout .

Per risolvere questo errore, impostare il valore di timeout di accesso remoto su 30 secondi eseguendo il codice seguente:

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

ICommandText::Execute

Server: msg 7399, livello 16, stato 1, riga 1 provider OLE DB 'SQLOLEDB' ha segnalato un errore. L'esecuzione è stata interrotta dal provider perché è stato raggiunto il numero di risorse massimo. [Messaggio restituito dal provider OLE/DB: Timeout scaduto] Traccia errore OLE DB [Provider OLE/DB 'SQLOLEDB' ICommandText::Execute restituito 0x80040e31: esecuzione terminata dal provider perché è stato raggiunto un limite di risorse.].

Questo messaggio di errore riguarda il ICommandText::Execute metodo . Indica che l'elaborazione della query ha richiesto più tempo rispetto al tempo specificato nell'impostazione di configurazione del timeout della query remota.

Il valore predefinito del timeout della query remota è 600 (10 minuti).

Per risolvere questo errore, disabilitare il timeout impostando il valore di timeout della query remota su 0 (attesa infinita) eseguendo il codice seguente:

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