Oracle リンク サーバー クエリを実行するとき、SQL Server サービスがクラッシュします。

適用対象: Microsoft SQL Server 2005 Enterprise EditionSQL Server 2008 EnterpriseSQL Server 2008 R2 Enterprise

現象


次のような状況で問題が発生します。
  • Windows Server を実行しているコンピューター上には、Microsoft SQL Server をインストールします。
  • Oracle データベースに対してリンク サーバーを作成します。
  • リンク サーバーのプロバイダーのオプション] ダイアログの [ inprocess 許可オプションを有効にするとします。 注: 既定では、オプションが選択されていません。
  • OraOLEDB プロバイダーを使用してリンク サーバー クエリを実行するとします。
このシナリオ、SQL Server サービスのクラッシュ、および検索結果はありませんがクエリで返されます。さらに、次の問題が発生する可能性があります。
  • Windows システム イベント ログに次のエラー メッセージが表示されます。
    ---------------------------------- SQL Server (MSSQLSERVER) サービスが予期せず終了しました。これは 1 回発生しています。 ----------------------------------
  • ヒープ破損の場合は、SQL Server プロセスのミニダンプ ファイルが生成し、次のような例外メッセージが表示します。
    で minidump.mdmp アセンブリ命令 ntdll!RtlReportCriticalFailure + 米国 Microsoft Corporation からの C:\Windows\System32\ntdll.dll で 62 スレッド 235 (0xc0000374) 不明な例外が発生しました または、また場合によってエラー ログには、別の例外を表示します。 SqlDumpExceptionHandler: 74 のプロセス生成、致命的な例外 c0000005 を参照します。SQL Server はこのプロセスを終了しています。
  • ミニダンプ ファイルのスタックには、Sqlserver.exe プロセス内のサードパーティ製のモジュールが含まれています。たとえば、ミニダンプ ファイルには、Oracle のモジュールに次の情報が含まれています。
    OraOLEDButl11 OraOLEDBrst11 OraOLEDBrst10 完全なコール スタック: 関数の引数 1 引数 2 の Arg 3 引数 4 ntdll!RtlReportCriticalFailure + 62 00000000'00000002 00000000'00000023 00000000' 403cc8a2'、00000003 00000000 ntdll!RtlpReportHeapFailure + 26' 00000000 403c95f0 00000000' 403d7a78' 00000000 403d7ab0 00000000' 4d200e30 ntdll!RtlpHeapHandleError 12 + 00000000'04180000 00000000'00000000 00000000'00000000 00000000'00000000 ntdll!RtlpLogHeapFailure + a4' 00000000 403d7b40 00000000'04180000 00000000' 403d7b50 00000000'00000008 ntdll!RtlFreeHeap + 1aa8f 00000000'00000020 00000000'403 cd 850 00000000'00000001 00000000'403 d 0024 ole32!元 + 36' 00000000 403d6b00 00000000'00000001 00000000' 4d200e30 00000000'00000024 OraOLEDButl11 + 1a5f 00000000'00000001 00000000' 4d200e30 00000000'00000024 00000000' 403d7ab8 403d7ab8 00000000'00000024 00000000' 0x403d6b00' 00000000 4d200e30 00000000'24492843 0x00000001 00000000'00000024 00000000' 403d7ab8 00000000'24492843 00000000' 403b8c00 0x4d200e30 00000000' 403b8c00' 00000000 403d7ab8 00000000'24492843 00000000' 403c95f0 0x00000024 00000000'24492843 00000000' 403b8c00' 00000000 403c95f0 00000000' 403ca610 0x403d7ab8' 00000000 403b8c00 00000000' 403c95f0' 00000000 403ca610 00000000' 403ca610 OraOLEDBrst11 + 12843' 00000000 403c95f0 00000000' 403ca610' 00000000 403ca610 00000000' 403c95f0 0x403b8c00' 00000000 403ca610 00000000' 403ca610' 00000000 403c95f0 00000000' 244928b1 0x403c95f0' 00000000 403ca610 00000000' 403c95f0' 00000000 244928b1 00000000' 403d7ab8 0x403ca610' 00000000 403c95f0 00000000' 244928b1' 00000000 403d7ab8 00000000' 403c95f0 0x403ca610' 00000000 244928b1 00000000' 403d7ab8' 00000000 403c95f0 00000000' 4966a260 0x403c95f0' 00000000 403d7ab8 00000000' 403c95f0' 00000000 4966a260 00000000' 05cd21e0 OraOLEDBrst11 + 128b1 00000000' 403c95f0' 00000000 4966a260 00000000' 05cd21e0'、00000000 00000000 0x403d7ab8 00000000' 4966a260' 00000000 05cd21e0 00000000'00000000 00000000' 2449ca03 0x403c95f0 00000000' 2449ca03' 00000000 05cd21e0 00000000'00000000 00000000' 4d200e30 0x4966a260 00000000'00000000 00000000' 2449ca03' 00000000 4d200e30 00000000'00000001 0x05cd21e0 00000000' 2449ca03' 00000000 4d200e30 00000000'00000001 00000000' 05cd21e0

原因


この問題が発生する特殊文字」--「Oracle リンク サーバーへクエリが存在します。これらの文字は、コメント記号として使用されます。SQL Server プロセス内に読み込まれるサードパーティ製のリンク サーバーのプロバイダーによって、SQL Server プロセスがクラッシュします。[ Inprocess 許可] オプションとは、サード ・ パーティ製のリンク サーバーのプロバイダーが有効である場合、このサード パーティのリンク サーバーには、内部の問題が発生した場合、SQL Server プロセスがクラッシュします。

回避策


この問題を回避するには、以下のいずれかの方法を使用します。
  • コメント記号を削除します。
  • コメント記号を次のコメント記号に置き換えます。
    /* */

詳細情報


次の表は、製品や、ルールの評価対象となる SQL Server 製品のバージョンと SQL Server のインスタンスでは、この条件を自動的にチェックするツールについての詳細を提供します。
ルール ソフトウェア ルール タイトル ルールの説明 ルールが評価される対象である製品バージョン
System Center Advisor SQL Server の SQL Server プロセス内で読み込まれるサードパーティ製のモジュールがあり、SQL Server がクラッシュする原因 この SQL Server のインスタンスでの SQL Server プロセス空間内の 1 つまたは複数のサードパーティ製モジュールの存在を検出しました。これらが原因で、SQL Server プロセスがクラッシュすることができます。詳細については、このサポート技術情報の記事を参照してください。 Microsoft SQL Server 2008 Microsoft SQL Server 2008 R2
情報と修正プログラムのサード パーティ プロバイダーに問い合わせてください。最新の ole DB プロバイダーのバージョンを参照してください。