C# アプリケーション内から DB 接続を開こうとすると、次のエラーが表示されます。このエラーは、おそらく以前に何百もの質問に表示されたことがあると思います。ただし、このシナリオでは、特定のデスクトップ PCで実行されているC# アプリでのみエラーが表示されます。Google やこの Web サイトでインターネットを調べましたが、解決策が見つかりません。
エラー:
「SQL Server への接続を確立しているときに、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー:名前付きパイプ プロバイダー、エラー: 40 - SQL Server への接続を開けませんでした)"
このシナリオがユニークな理由:
SQL Server Management Studio (SSMS)から SQL サーバーに接続できます。このアプリケーションは別のコンピューターで動作し、そこから SQL サーバーへの接続を確立できます。したがって、このエラー シナリオは、特定のデスクトップ PC で実行されている C# アプリケーションに固有のものです。他のアプリは機能します (SSMS)。他のPCの仕事。
WireShark を使用して「ワイヤをスニッフィング」すると、アプリが NamedPipes (つまり、\Server\IPC$) 経由で接続しようとしていることがトレースに示されます。TCP/IP の使用を強制することはできないようです。
私が試したこと:
- 再インストールされた.NET Framework
- Visual Studio の再インストール (C# - Express バージョン 2010)
- cliconfg.exe 内にエイリアスを作成しました。
私が逃したものはありますか?
これが私が試した接続文字列です...
Data Source=<servername>;Initial Catalog=HIE;Integrated Security=true
Server=tcp:10.240.11.81;Integrated Security=SSPI; database=HIE
Data Source=10.240.11.81,1433;Network Library=DBMSSOCN;Initial Catalog=HIE;User ID=<SqlUserIdThatISetUpAsSysAdmin>;Password=<password>
コード スニペットは次のとおりです。
_conn = new SqlConnection(); // _conn declared globally
_conn.ConnectionString = <the connection string above>;
_conn.Open();