2016-07-06 22 views
2

SQL Server 2014に接続しようとしています。システムチームは最近2014年にアップグレードしました。変わったのは、SQL Server Management Studioを使用してODBC、Telnetに接続できることです。これは単なるC#の問題です。さらに、この正確なプログラムは別のサーバーでコンパイル/リリースとして実行されます。私のシステムでは、デバッグ(または完全にコンパイル/リリース)を使用して実行されていません。C#プログラムでSQL Serverに接続できませんが、システムに接続することができます

私はドキュメントで確認 - 無効すべてのファイアウォール、STPは、サーバーをチェックしていた...灘

エラー:

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: 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)

私のC#コード:

namespace SQLTest 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string connectionString = ConfigurationManager.ConnectionStrings["SQLConn"].ConnectionString; 
      string OrganizationSqlStr = @"SELECT * FROM school"; 

      SqlConnection connection = new SqlConnection(connectionString); 
      SqlCommand command = new SqlCommand(OrganizationSqlStr, connection); 
      connection.Open(); 

      SqlDataReader reader = command.ExecuteReader(); 

      while (reader.Read()) 
      { 
       Console.Write(reader["School_ID"] + " | "); 
       Console.Write(reader["title"] + "\n\r"); 
      } 

      Console.ReadKey(); 
     } 
    } 
} 

app.configを:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
    </startup> 
    <connectionStrings> 
     <add name="SQLConn" 
      connectionString="server=SERVER;database=DATABASE;uid=USERNAME;password=PASSWORD"/> 
    </connectionStrings> 
</configuration> 
+0

明白な疑問やご意見でしたが、あなたの接続文字列で 'DATABASE'、' USERNAME'、 'PASSWORD'を実際の値に置き換えましたか? –

+0

えええええええええええええええええええええええええええええええええええと、 :) –

+0

@HarporSydneyあなたはSQLアカウントを介してSQLサーバーに接続しているか、Windowsの資格情報を使用していますか? SQLアカウントを使用している場合、データベースは混在認証を許可するように構成されていますか? – user1666620

答えて

1

私は、TCP

http://www.connectionstrings.com/sqlconnection/

見つけるを使用するために、.NETプログラムを強制しようとしますセクション

IPアドレスを介して接続

Data Source=190.190.200.100,1433;Network Library=DBMSSOCN; 
Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword; 

Network Library=DBMSSOCNは魔法の砂糖です。

も参照してください。

What does DBMSSOCN stand for?

APPEND:それはまだエラーが発生した場合

、その後、何かがおそらくあなたのアクセスをブロックしています。

ここには一般的なツールがあります。

https://www.microsoft.com/en-us/download/details.aspx?id=24009

IPとポート番号を指定し、それはポートがブロックまたはフィルタリングされたあなたにそれを教えてあげましょう。

私の個人的な歴史は、ポート番号をフィルタリングしてSQL Serverのアクセスを停止していた新しいルータをインストールしたことです。 portqueryuiは問題を明らかにした。 PortQryはSQL Serverの「外部」で動作するので、ネットワークの人はSQL Serverに接続の欠如を責められません。

APPEND

OPはこれがあなたの問題で、この答え

portqry.exe -n db-alexandrite.domain.edu -e 1433 -p TCP exits with return code 0x00000000 

のコメントでの投稿です。 "db-alexandrite.domain.edu"は解決されません。

"db-alexandrite.domain.edu"をそのマシンの実際のIPアドレスに変更することで修正できます。

または「db-alexandrite.domain.edu」が解決しない理由を理解してください。

+0

Ok - システムに問題があるように見えます。 'System.Data.SqlClient.SqlException'型の未処理の例外がSystem.Data.dllで発生しました 追加情報:ネットワーク関連またはインスタンスSQL Serverへの接続を確立する際に、特定のエラーが発生しました。サーバーが見つからなかったか、アクセスできませんでした。インスタンス名が正しいこと、およびSQL Serverがリモート接続を許可するように構成されていることを確認します。 (プロバイダー:TCPプロバイダー、エラー:0 - 無効な引数が指定されました) –

+0

私は私の答えを追加しました。 – granadaCoder

+0

この質問の受け入れられた回答を見てみるとよいでしょう(SQL Serverが稼動しているポートを知るため)。http:// stackoverflow。com/questions/12297475/how-to-find-sql-server-running-port – granadaCoder

0

チームにすべてのネットワークプロトコルが有効になっているかどうかを確認するよう依頼します。 tcpまたは名前付きパイププロトコルを有効にする必要があります。

-1
<add name="SQLConn" connectionString="Data Source=SERVER;Integrated Security=False;User ID=USER;Password=PASSWORD;Initial Catalog=DATABASE" providerName="System.Data.SqlClient" /> 
+2

この回答は役に立ちません。このデータのコンテキストとは何ですか?それは設定ファイルに入っていますか?これがOPの問題を解決する方法をどのように提案しますか?より多くの情報を提供する必要があります。 – antiduh

0

このエラーが便利です:

(provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) 

あなたの接続文字列、またはデフォルトでSqlConnectionオブジェクトは、SQLサーバーに接続するために、名前付きパイププロバイダを使用したいようです。

あなたのサーバーが最近変更/アップグレードされたとすれば、名前付きパイププロバイダーが無効になっている可能性があります。 It's a common mistake

あなたはaltering your connection stringによって代わりに名前付きパイプの簡単なTCPを使用するように接続を強制することができます

server=tcp:mysqlserver.domain.com;... 
0

私は最近SQLで新しいテストサーバーをセットアップし、通常のチェックリストを調べました。

  1. リモート接続が許可されていることを確認してください。
  2. 統合モードがWindowsとSql Serverの両方のログインを使用していることを確認してください。
  3. ポート1440/your portとtcp/your protocolがsql設定マネージャで有効になっていることを確認してください。
  4. ファイアウォールが送受信を許可していることを確認してください。
  5. 接続文字列が有効であることを確認してください。

これらの4つの手順は、ほとんどの接続の問題を解決します。ただし、新しいサーバーでは、Windows Defenderは既定でブロックされます。防御側で私的なプロフィールと公開プロフィールを無効にする必要がありました。私たちはWindows Defenderを使用していないので、これは大丈夫でした。しかし、あなたがそれに頼っているなら、ルールを作成する必要があります。

関連する問題