web-dev-qa-db-ja.com

TCP / IPでSQL Server 2008に接続する

SQL Server ManagementStudioからTCP/IPに接続しようとすると、次のエラーが発生します。問題を解決するには、段階的な説明が必要です。ここで何が問題になっていますか?

Cannot connect to 
===================================

A network related or instance specific error when a connection to SQL Server...
(provider: Named pipe-provider, error: 40 -  SQL Server)
(.Net SqlClient Data Provider)

------------------------------
For help, click: http://go.Microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=53&LinkId=20476

------------------------------
Error Number: 53
Severity: 20
State: 0

------------------------------
Program Location:

   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject)
   at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
   at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String Host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
   at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()
   at Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.ObjectExplorer.ValidateConnection(UIConnectionInfo ci, IServerType server)
   at Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()
10
MCOL

私がいつも忘れているのは、SQLServerNetwork-> Protocols for MSSQLServerでtcpを有効としてマークした場合でも、サーバーで異なる可能性のあるIPアドレスを有効にする必要があるということです。単一のNICを持つサーバーでさえ、複数のIPアドレスを持ちます。

  1. 上記のMSSQLServerのプロトコルをクリックします。
  2. 次に、右側のペインでTCP/IPを有効にします。
  3. 次に、TCP/IPをダブルクリックして、ダイアログウィンドウを表示します。
  4. サーバーのすべてのIPアドレスをリッスンする場合は、最初の[プロトコル]タブの[すべてリッスン]ボックスで[はい]を選択します。さもないと
  5. [IPアドレス]タブを選択し、[有効]を[はい]に設定して目的のIPアドレスを有効にします。

enter image description here

17
Ed Ost

SQL Serverネットワーク構成を確認する場合(Start Menu > Microsoft SQL Server > Configuration Tools > SQL Server Configuration Manager > SQL Server Network Configuration)、何が見えますか?

alt text

サーバーでTCP/IPプロトコルが本当に有効になっていますか?デフォルトではオフになっており、ほとんどの場合はオフのままです(特にオンにしない限り)。

IPベースのサーバーアドレスを使用するだけでは、TCP/IPプロトコルを使用して接続しているわけではありません。.. http://www.connectionstrings.com/sql-server-2008willがTCP/IPを使用するサンプル接続文字列:

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

重要なのはNetwork Library=DBMSSOCN; TCP/IPを使用して接続するようにコードに指示します。

13
marc_s

TCP/IP接続がこのサービスを使用するため、SQLServerブラウザサービスが実行されていることも確認する価値があります。

8
IsolatedStorage

Www.connectionstrings.comをご覧ください。エラーメッセージは、tcp/ipではなく、名前付きパイプを使用しているようです。 SQL ServerのサーバーマシンでTCP/IPを明示的に有効にする必要があることを忘れないでください。

4
Sascha

これを構成するための優れたウォークスルーがあります。

  • データベースサーバーのTCP/IPプロトコルの有効化
  • データベースサーバーのリモート接続を有効にする
  • TCPファイアウォールを通過するトラフィックを許可する

http://blogs.msdn.com/b/walzenbach/archive/2010/04/14/how-to-enable-remote-connections-in-sql-server-2008.aspx にあります。

3
metamatt

サーバーがTCP/IP経由の接続を受け入れるように設定されていることを200%確信していますか?

2
CResults

これに従ってください:

[スタート]-> [プログラム]-> [Microsoft SQL Server 2008]-> [構成ツール]-> [SQLServer構成マネージャー]

SQLServerネットワーク構成-> [SQLInstanceName]のプロトコル

TCP/IPを右クリック->有効にする

0
cjk

TCP/IPがすでに有効になっている場合は、ファイアウォールが接続をブロックしているようです。関連するポートを開くと、機能するはずです。

接続の両端のファイアウォールを確認する必要があります。

0
Cromulent