2010-03-05 3 views
10

Я получаю следующую ошибку, когда пытаюсь подключиться к TCP/IP из SQL Server Management Studio. Мне нужно пошаговое описание, чтобы решить мою проблему. Что здесь не так?Подключиться к SQL Server 2008 с 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() 
+9

Просто дружеский совет: ничего не требуйте, то есть когда вы сказали «Я хочу пошаговое описание, чтобы решить мою проблему. .. ". Это дает неправильное впечатление; мы все добровольцы здесь. –

+0

ОК, извините ... не было смысла звучать так .... – MCOL

+0

По всей вероятности, ваш клиент или ваш сервер (или оба) не настроены, чтобы разрешить tcp/ip как ваш транспортный сервер Sql. – RBarryYoung

ответ

4

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

+0

Спасибо .. но я использую номер tcp/ip – MCOL

+0

Если вы настроили сервер не использовать порт по умолчанию, вы можете добавить псевдоним или указать порт явно. Это должно быть в URL-адресе в качестве примера. Кроме того, брандмауэр и данные комментарии к строке подключения должны привести к решению. – Sascha

2

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

+0

Да, я уверен ..... – MCOL

+0

На сервере, с которым вы пытаетесь подключиться, запустить SQL Server Configuration Manager, настроить сеть, проверить, что TCP/IP включен (в отношении выше). Также проверьте список IP-адресов (двойным щелчком), чтобы убедиться, что вы пытаетесь подключиться к одному из них. – CResults

13

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

alt text http://i50.tinypic.com/5lpcpk.png

ли протокол 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.

+1

TCP/IP включен ... – MCOL

+0

на сервере и на стороне клиента? Какова последовательность протоколов на стороне клиента? Если вы явно не укажете, какой из них использовать, клиент SQL Server выберет первый включенный в списке. Это находится в разделе «Конфигурация собственного клиента SQL» –

0

Следуйте за этим:

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

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

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

+1

Done..but does not work ..... – MCOL

0

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

Необходимо проверить межсетевой экран на обоих концах соединения.

3

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

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

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

17

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

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

enter image description here

+0

Если кому-то интересно, как это сделать из сценария: http://promikro.com.pl/2013/09/18/mssql2012expr-en-ip-addrs-problem/ – SOReader

8

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

+1

Это то, что я сделал для меня. Я также включил «Агент SQL Server» одновременно. Спасибо тонну за это предложение. – DustinA

-1

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

Смежные вопросы