none
同じ環境でmdfファイルをコピーしたが片方が接続出来ない RRS feed

  • 質問

  • 環境1:Windows7home(32bit), SQL Server 2008 Express R2(x32)
    環境2:Windows7pro(64bit), SQL Server 2008 Express R2(x64)

    開発環境が2台あり、頻繁に環境1~2間でmdfファイルを移動していました。
    その際に、SQLServerのデタッチ、アタッチを行わずにファイルを上書きしていました。

    これでそのままSQLServerが認識することもあれば、認識しなくなることもあり、その際はデタッチ・アタッチを行えば
    認識し特に問題ありませんでした。

    ところが今回、SQLServerでは認識こそしたもののアプリケーションから接続が出来なくなりました。
    接続に行くと、以下のエラーが出ます。
    Message : サーバーとの接続を正常に確立しましたが、ログイン中にエラーが発生しました。
     (provider: 共有メモリ プロバイダ, error: 0 - パイプの他端にプロセスがありません。)

    インスタンスに他にデータベースが幾つかあり、他のデータベースには繋がるのでアプリケーションの問題ではないことは確かです。同じアプリケーションなので。

    【確認したこと】
    環境2ではアプリケーションから接続出来ます。
    環境2のmdfを環境1に持って来てデタッチ、アタッチを行いました。
    環境1のSQL Managermemnt上で認識しました。
    環境1のアプリケーションから接続出来ず今回のエラーが出ました。

    この辺も参考にしましたが同じでした。そもそも環境1と環境2の設定は同じでした。
    パイプの他端にプロセスがない場合のトラブルシューティング
    http://msdn.microsoft.com/ja-jp/library/ms175496(SQL.90).aspx


    SQLServerのデタッチ、アタッチを行わずにファイルを上書きしていたのが問題だったのでしょうか?

    何か確認すべきことがないでしょうか?

    2014年1月12日 8:21

回答

  • どのように接続を受け付けるかはインスタンス毎の設定ではありますが、mdfファイルに記録されているわけではありません。環境1、2で異なっているということはありませんか?

    それとは別に、接続元のアプリケーションは正しい接続先を指定していますか? よくあるのは「環境2にリモート接続する」接続文字列になっていることです。この場合、環境2には接続できますが、環境1からはfirewallで閉ざされていると接続できません。(というよりlocalに接続する接続文字列にすべきとは思います。)

    • 回答としてマーク sumi_sumi 2014年1月13日 0:52
    2014年1月12日 13:30

すべての返信

  • どのように接続を受け付けるかはインスタンス毎の設定ではありますが、mdfファイルに記録されているわけではありません。環境1、2で異なっているということはありませんか?

    それとは別に、接続元のアプリケーションは正しい接続先を指定していますか? よくあるのは「環境2にリモート接続する」接続文字列になっていることです。この場合、環境2には接続できますが、環境1からはfirewallで閉ざされていると接続できません。(というよりlocalに接続する接続文字列にすべきとは思います。)

    • 回答としてマーク sumi_sumi 2014年1月13日 0:52
    2014年1月12日 13:30
  • 佐祐理 様

    有難う御座います。

    再度確認したところ、接続文字列に相違がありました。

    ご指摘の通りでした。

    つまらないことで質問してしまい申し訳ありませんでした。

    本当に有難う御座いました。

    • 編集済み sumi_sumi 2014年1月13日 0:52
    2014年1月12日 14:07