2016-09-28 14 views
0

ネットワーク上のSQLサーバーに手動で接続しようとすると問題が発生します。SqlClient経由のSql接続文字列

web APIには正常に動作するconn文字列があります。VS2015 winformsプロジェクトを使用してVSツールを使用して接続をテストして接続するように設定しましたが、これも正常に動作します。

しかし、私はSQLconnection経由で接続しようとすると失敗し、サーバーが見つからない、またはアクセスできないと表示されます。だから、HERESにテストコード

...

string connectionString = @"Data Source=test1\test1;Initial Catalog=my_test;Integrated Security=True;"; 

     using (SqlConnection connection = 
     new SqlConnection(connectionString)) 
     { 
      // Create the Command and Parameter objects. 
      SqlCommand command = new SqlCommand("", connection); 
      // Open the connection in a try/catch block. 
      // Create and execute the DataReader, writing the result 
      // set to the console window. 
      try 
      { 
       connection.Open(); 
       SqlDataReader reader = command.ExecuteReader(); 
       while (reader.Read()) 
       { 
        Console.WriteLine("\t{0}\t{1}\t{2}", 
         reader[0], reader[1], reader[2]); 
       } 
       reader.Close(); 
      } 

      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 
      Console.ReadLine(); 
     } 

は今、私は単に接続を確立するために必要な結果か何か気には本当にいけません。 Web APIが動作し、DBへの接続用のVSツールがうまく動作するとき、なぜこのエラーをスローするのかわかりません。

私はサーバーをチェックし、名前付きパイプを有効にするだけで確認しました。

アイデア?

編集:私はキャッチエラー...

{"A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)"} 

は接続を開こうとすると、約15秒後に起こります。 これはconnectiinの文字列です。私は、SQLツールで使用されているものとまったく同じ文字列を試しています。これを行ったので、有効な文字列があることが分かりました。

ODBC接続も同じメッセージで落ちます。

私はmachinbeからポート1433を聞くことができますが、サーバーがリッスンしていないことを確認しています。 しかし、動的ポートには41934までの範囲の動的ポートに設定されているので、動的ポートにもかかわらずリッスンevenbとは言えません。

EDIT2:ドライバ...ちょうど同じコードを試して、すぐに働いた...

これは私が感じる未知の領域に潜り込んでいます。統合セキュリティは、ローカルログインのために使用されている

string connectionString = @"Data Source=test1\test1;Initial Catalog=my_test;Integrated Security=True;"; 

、データベースにアカウントを作成し、変更することができます:解が

+1

おそらく、WinFormアプリケーションを実行しているユーザーには、DBへのアクセス権がありませんか? .exeをデータベースにアクセスできるユーザーとして実行してみてください。 –

+0

同じマシンのSql Server Management Studioセッションで_test1 \ test1_を使用すると接続できますか? – Steve

+0

ユーザーにアクセス権があります。はい、SSMS経由で\ test1に接続できます。 – lemunk

答えて

1

見つからない場合は質問の削除のために頼むかもしれない、私は私が問題を参照してくださいと思います接続文字列:

string connectionString = @"Data Source=test1\test1;Initial Catalog=my_test;User id=<Username>;Password=<Password>;"; 

私はこれが役立つことを望みます。

+0

標準ユーザーのログインを試しても同じ結果を返す – lemunk

+0

ネットワーク内のSQLサーバーのIPを使用できます。 – LittleProgrammer

+0

yupもこれと同じ結果とエラーを試みました – lemunk

関連する問題