SQL Server 2005 のインスタンスに接続しようとするときにエラー メッセージ:「プロセスは、パイプのもう一方の端に」または「リモート ホストによっては、既存接続切断強制的に」

現象

以下の事例で説明します。Microsoft SQL Server 2005 のインスタンスは、Microsoft Windows XP または Windows 2000 を実行しているコンピューターにインストールされます。インスタンスに接続しようとするとします。このシナリオでは、接続に使用するプロトコルによっては、次のエラー メッセージのいずれかが表示されます。
  • 名前付きパイプ プロトコルまたは共有メモリ ・ プロトコルを使用してインスタンスに接続しようとすると、次のエラー メッセージが表示されます。
    プロセスがパイプのもう一方の端ではありません。
  • TCP/IP プロトコルを使用してインスタンスに接続しようとすると、次のエラー メッセージが表示されます。
    既存の接続は、リモート ホストによって強制的に切断されました。

原因

AT_SIGNATURE キーの仕様を持つ証明書を使用してインスタンスの Secure Sockets Layer (SSL) 暗号化のため、この問題が発生します。AT_SIGNATURE キーの仕様を持つ証明書は、SQL Server 2005 の SSL 暗号化を使用できません。Microsoft Windows Server 2003 を実行しているコンピューターに証明書が無効なものとして認識されます。したがって、SQL Server サービスは、証明書をロードしていない、サービスが開始されません。ただし、Windows XP または Windows 2000 を実行しているコンピューターで SQL Server サービスは、証明書を読み込むし、サービスが正常に起動。この動作が原因で接続に失敗します。

解決策

この問題を解決するには、有効な証明書を使用します。AT_EXCHANGE キーの仕様を持つ証明書を使用する必要があります。

Certutil ユーティリティ (Certutil.exe) を使用して証明書のキーの仕様を調べることができます。これを行うには、以下の手順を実行します。
  1. コマンド プロンプトで次のコマンドを実行します。
    Certutil-v を格納する私のCertificateSerialNumber
    注: このコマンドで、 CertificateSerialNumberは、インスタンスの指定した証明書のシリアル番号のプレース ホルダーです。証明書のシリアル番号を取得するには、次のレジストリ サブキーを見つけます、証明書のレジストリ エントリの値を取得します。
    付き SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib
  2. 結果のテキスト内には、次のようなセクションを見つけます。
    CERT_KEY_PROV_INFO_PROP_ID(2):

    キー コンテナー = c3748a7420955ed4ee1dffb26484a0df_64756357-bf11-4528-b106-59c407d8a6e8

    プロバイダー = Microsoft RSA SChannel の暗号化サービス プロバイダー

    プロバイダーの種類 = c

    フラグ = 60

    KeySpec = 1
    KeySpecプロパティでは有効な証明書では、1 の値があります。KeySpecプロパティに値 2 がある場合は、証明書は、AT_SIGNATURE キーの仕様を持ちます。したがって、証明書を使用する場合は、「現象」に記載されている問題が発生します。

状況

マイクロソフトは、この問題を「対象製品」セクションに記載されているマイクロソフト製品の問題として認識しています。

詳細

インスタンス用の証明書を指定するのには、SQL Server 構成マネージャーを使用することを強くお勧めします。 SQL Server 構成マネージャーは、サーバーで使用する有効な証明書のみを表示します。したがって、無効な証明書を選択することを回避できます。
プロパティ

文書番号:919710 - 最終更新日: 2017/02/02 - リビジョン: 1

フィードバック