Соединитесь с SQL Server 2008 с TCP / IP - PullRequest
10 голосов
/ 05 марта 2010

При попытке соединения с TCP / IP из SQL Server Management Studio появляется следующая ошибка. Мне нужно пошаговое описание, чтобы решить мою проблему. Что здесь не так?

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()

Ответы [ 9 ]

17 голосов
/ 29 июля 2012

Я обычно забываю о том, что даже если вы пометите tcp как включенный в SQLServerNetwork-> Protocols for MSSQLServer, вам все равно придется пойти и включить потенциально разные IP-адреса для вашего сервера. Даже сервер с одним NIC будет иметь несколько IP-адресов.

  1. Нажмите на протоколы для MSSQLServer, как указано выше.
  2. Затем в правой панели включите TCP / IP.
  3. Теперь дважды щелкните TCP / IP, чтобы открыть диалоговое окно.
  4. Если вы хотите прослушивать все IP-адреса сервера, выберите Да в Окно «Прослушать все» на первой вкладке «Протокол»; в противном случае
  5. Выберите вкладку IP-адреса и включите нужные IP-адреса, установив Включено Да.

enter image description here

13 голосов
/ 05 марта 2010

Когда вы проверяете конфигурацию сети 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-2008 для образца строки подключения, которую будет использовать 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.

8 голосов
/ 10 декабря 2012

Также стоит проверить, что служба браузера SQL Server работает, так как соединения TCP / IP будут использовать эту службу

4 голосов
/ 05 марта 2010

Взгляните на www.connectionstrings.com. Сообщение об ошибке выглядит так, как будто вы используете именованные каналы, а не tcp / ip. Не забывайте, что вы должны явно включить TCP / IP на серверах для SQL Server.

3 голосов
/ 31 мая 2012

Существует хорошее руководство по настройке, в том числе

  • Включение протокола TCP / IP для сервера базы данных
  • Включение удаленных подключений для сервера базы данных
  • Разрешение трафика TCP через брандмауэр

в http://blogs.msdn.com/b/walzenbach/archive/2010/04/14/how-to-enable-remote-connections-in-sql-server-2008.aspx.

2 голосов
/ 05 марта 2010

Вы на 200% уверены, что ваш сервер настроен на прием соединений через TCP / IP?

0 голосов
/ 06 февраля 2013

И - вы можете изменить его на экране протоколов диспетчера конфигурации SQL Server, но он не вступит в силу до перезапуска службы sql server. Я просто перезагружаюсь - это единственный способ убедиться (ссылка на инопланетян там:)

0 голосов
/ 06 марта 2010

Если TCP / IP уже включен, значит, ваш брандмауэр блокирует соединение. Откройте соответствующие порты, и это должно работать.

Вы должны проверить брандмауэр на обоих концах соединения.

0 голосов
/ 05 марта 2010

Следуйте этому:

Начало -> Программы -> Microsoft SQL Server 2008 -> Инструменты настройки -> Диспетчер конфигурации SQL Server

Конфигурация сети SQL Server -> Протоколы для [SQLInstanceName]

Щелкните правой кнопкой мыши TCP / IP -> Включить

...