次の方法で共有


MSSQLSERVER_7399

適用対象: SQL サーバー

属性 Value
Product SQL Server
イベント ID 7399
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 RMT_HRESULT_FAIL
メッセージ テキスト リンク サーバー "%ls" の OLE DB プロバイダー "%ls" でエラーが報告されました。%ls

説明

このエラーは、リモート サーバーで生成されたエラーが原因でリンク サーバー クエリが失敗した場合に発生します。

エラー 7399 は、プロバイダーからの一般的なエラー メッセージです。 場合によっては、プロバイダーからより詳細なエラー メッセージを取得するために、トレース フラグ 7300 を有効にすることができます。 詳細情報を受け取るかどうかは、使用する OLE DB (オブジェクト リンクと埋め込み、データベース) プロバイダーによって異なります。 トレース フラグを有効にするには、エラーの原因となるクエリを実行する前に、次のコマンドを実行します。

DBCC TRACEON (7300, 3604);

ユーザー アクション

エラー 7399 は、より具体的なメッセージを含む一般的なエラーですが、一般的に観察される特定のエラーは "タイムアウト期限切れ" です。リモート クエリに影響する 2 つの構成可能なタイムアウト オプションがあります。 リモート ログイン タイムアウト オプションと リモート クエリ タイムアウト オプションです。 7399 内で発生したタイムアウト エラーとその対処方法の例を次に示します。

IDBInitialize::Initialize

サーバー: メッセージ 7399、レベル 16、状態 1、1 行目の OLE DB プロバイダー 'SQLOLEDB' がエラーを報告しました。 [OLE/DB プロバイダーから返されたメッセージ: タイムアウトの有効期限が切れています]OLE DB エラー トレース [OLE/DB Provider 'SQLOLEDB' IDBInitialize::Initialize returned 0x80004005: ]。

このエラー メッセージは、 IDBInitialize::Initialize メソッドに関連します。 これは、リモート サーバーへの接続を確立するためにクエリにかかった時間が、 リモート ログイン タイムアウト オプション値を超えた場合に発生します。

このエラーを回避するには、次のコードを実行して、 リモート ログイン タイムアウト 値を 30 秒に設定します。

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

ICommandText::Execute

サーバー: メッセージ 7399、レベル 16、状態 1、1 行目の OLE DB プロバイダー 'SQLOLEDB' がエラーを報告しました。 リソースの上限に達したので、プロバイダーが実行を終了しました。 [OLE/DB プロバイダーから返されたメッセージ: タイムアウトの有効期限が切れています]OLE DB エラー トレース [OLE/DB Provider 'SQLOLEDB' ICommandText::Execute returned 0x80040e31: リソース制限に達したため、プロバイダーによって実行が終了しました。]

このエラー メッセージは、 ICommandText::Execute メソッドに関連します。 リモート クエリ タイムアウト構成設定で指定した時間よりも、クエリの処理に時間がかかったことを示します。

既定の リモート クエリ タイムアウト600 (10 分) です。

このエラーを回避するには、次のコードを実行して、 リモート クエリタイムアウト 値を 0 (無限待機) に設定してタイムアウトを無効にします。

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