none
接続エラーで「インスタンス エラーです。」 RRS feed

  • 質問

  • こちらの環境はVisual Studio 2008 SP1
    SQL Server 2008 Developer
    マシン名 JOJO
    SQL Serverインスタンス名 MSSQLSERVER
    接続したいデータベース名 インストール時に既定で入るサンプル ReportServer
    using System.Data.SqlClient;
    namespace SQL_Serverと接続 {
    	class Class1 {
    		static void Main() {
    			//var c=new SqlConnection(@"server=JOJO\\MSSQLSERVER;database=ReportServer;Trusted_Connection=yes;");
    			var c=new SqlConnection(@"Data Source=JOJO\\MSSQLSERVER;Initial Catalog=ReportServer;Trusted_Connection=yes;");
    			c.Open();
    		}
    	}
    }
    
    c.Open()時にInvalidOperationExceptionで「インスタンス エラーです。」が発生します。

    SQL Server Management Studioではデータベースにアクセスできている状態です。
    ODBCでデータソースを作り接続テストはできています。
    Accessのデータアクセスプロジェクト(adp)でも接続できています。
    そのため恐らくは接続文字列のみの設定の問題ではないか?と思っています。
    原因はなんであるかご教授お願いします。
    2009年12月14日 1:05

回答

  • ありがとうございます。その接続文字列で試したところ

    "SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。 (provider: SQL ネットワーク インターフェイス, error: 25 - 接続文字列が有効ではありません)"

    とでます。1433TCP,1434UDPのポートはあけてありますし、ファイヤウォールを無効にしてもだめでした。

    SQL Server Connection Managerでインスタンス名を調べたところ
    「SQL Server(MSSQLSERVER)」でした。
    インストール時の既定でこの名前であったことは確認しました。
    しかしManagemnt Studioではインスタンス名は空でした
    そこで
    @"Data Source=JOJO;Initial Catalog=ReportServer;Trusted_Connection=yes;"
    という接続文字列にしたところ接続できました

    解決したのですが、何故インスタンス名があったりなかったりするのかがなぞでした。
    • 回答としてマーク 和和和 2009年12月14日 2:43
    2009年12月14日 2:42

すべての返信

  • ぱっと見て思うのは \ は1個です。

    "Data Source=JOJO\\MSSQLSERVER~
    @"Data Source=JOJO\MSSQLSERVER~

    どちらかで。
    2009年12月14日 2:00
  • ありがとうございます。その接続文字列で試したところ

    "SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。 (provider: SQL ネットワーク インターフェイス, error: 25 - 接続文字列が有効ではありません)"

    とでます。1433TCP,1434UDPのポートはあけてありますし、ファイヤウォールを無効にしてもだめでした。

    SQL Server Connection Managerでインスタンス名を調べたところ
    「SQL Server(MSSQLSERVER)」でした。
    インストール時の既定でこの名前であったことは確認しました。
    しかしManagemnt Studioではインスタンス名は空でした
    そこで
    @"Data Source=JOJO;Initial Catalog=ReportServer;Trusted_Connection=yes;"
    という接続文字列にしたところ接続できました

    解決したのですが、何故インスタンス名があったりなかったりするのかがなぞでした。
    • 回答としてマーク 和和和 2009年12月14日 2:43
    2009年12月14日 2:42
  • 解決したのですが、何故インスタンス名があったりなかったりするのかがなぞでした。

    MSSQLSERVERは規定のインスタンス名であり、接続時にはこの名前を指定する必要はありません。

    (参考)
    インスタンスの構成
    http://msdn.microsoft.com/ja-jp/library/ms143531.aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年12月14日 4:49