Подключение к SQL Server 2008 через TCP / IP

Я получаю следующую ошибку, когда пытаюсь подключиться к 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()

person MCOL    schedule 05.03.2010    source источник
comment
Просто дружеский совет: ничего не требуйте, т.е. когда вы сказали, что я хочу пошаговое описание для решения моей проблемы ... Это создает неверное впечатление; мы все здесь добровольцы.   -  person Alex Beardsley    schedule 05.03.2010
comment
хорошо, извините ... я не хотел так звучать ....   -  person MCOL    schedule 05.03.2010
comment
По всей вероятности, ваш клиент или ваш сервер (или оба) не настроены для разрешения tcp / ip в качестве транспорта вашего сервера Sql.   -  person RBarryYoung    schedule 05.03.2010
comment
Имея такую ​​же проблему .. Пробовал все ответы здесь. Брандмауэр его не блокирует и включил tcp в диспетчере конфигурации.   -  person The Muffin Man    schedule 10.04.2014


Ответы (8)


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

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

введите описание изображения здесь

person Ed Ost    schedule 29.07.2012
comment
Если кому-то интересно, как это сделать из скрипта: promikro.com.pl/2013/09/18/mssql2012expr-en-ip-addrs-problem - person SOReader; 12.07.2014

Что вы видите при проверке сетевой конфигурации SQL Server (Start Menu > Microsoft SQL Server > Configuration Tools > SQL Server Configuration Manager > SQL Server Network Configuration)?

альтернативный текст

Действительно ли на вашем сервере включен протокол 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.

person marc_s    schedule 05.03.2010
comment
на сервере и на стороне клиента ?? Какая последовательность протоколов на стороне клиента? Если вы явно не укажете, какой из них использовать, клиент SQL Server выберет первый включенный в списке. Это в конфигурации собственного клиента SQL - person marc_s; 05.03.2010

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

person IsolatedStorage    schedule 10.12.2012
comment
Это то, что сделало это для меня. Я также одновременно включил агент SQL Server. Большое спасибо за это предложение. - person DustinA; 05.11.2013

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

person Sascha    schedule 05.03.2010
comment
Спасибо .. но я использую номер tcp / ip - person MCOL; 05.03.2010
comment
Если вы настроили свой сервер, чтобы не использовать порт по умолчанию, вы можете добавить псевдоним или указать порт явно. Это должно быть в опубликованном URL в качестве примера. Кроме того, брандмауэр и данные комментарии к строке подключения должны привести к решению. - person Sascha; 09.03.2010

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

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

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

person metamatt    schedule 31.05.2012

Следить за этим:

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

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

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

person cjk    schedule 05.03.2010

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

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

person Cromulent    schedule 06.03.2010

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

person Warren    schedule 06.02.2013