2010-03-05 17 views
10

Recibo el siguiente error cuando intento conectarme con TCP/IP desde SQL Server Management Studio. Necesito una descripción paso a paso para resolver mi problema. ¿Qué pasa aquí?Conéctese a SQL Server 2008 con 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

Solo un consejo amistoso: no exija nada, es decir, cuando dijo "Quiero una descripción paso a paso para resolver mi problema. .. ". Da la impresión equivocada; todos somos voluntarios aquí. –

+0

bien, lo siento ... no era mi intención sonar así ... – MCOL

+0

Con toda probabilidad, su cliente o su servidor (o ambos) no están configurados para permitir tcp/ip como su transporte de servidor Sql. – RBarryYoung

Respuesta

4

Eche un vistazo a www.connectionstrings.com. El mensaje de error parece que está utilizando canalizaciones con nombre y no tcp/ip. No olvide que debe habilitar TCP/IP en las máquinas del servidor para SQL Server explícitamente.

+0

Gracias ... pero estoy usando un número tcp/ip – MCOL

+0

Si configura su servidor para que no use el puerto predeterminado, es posible que desee agregar un alias o indicar el puerto explícitamente. Esto debería estar en la URL publicada como un ejemplo. Además de eso, el cortafuegos y los comentarios dados en la cadena de conexión deberían conducir a una solución. – Sascha

2

¿Está 200% seguro de que su servidor está configurado para aceptar conexiones a través de TCP/IP?

+0

Sí, estoy seguro ..... – MCOL

+0

En el servidor al que está intentando conectarse, ejecute el Administrador de configuración de SQL Server, la configuración de red, compruebe que TCP/IP esté habilitado (en relación con lo anterior). También verifique la lista de direcciones IP (haciendo doble clic) para asegurarse de que está tratando de conectarse a una de ellas. – CResults

13

Cuando comprueba la configuración de red del servidor SQL (Start Menu > Microsoft SQL Server > Configuration Tools > SQL Server Configuration Manager > SQL Server Network Configuration), ¿qué ve?

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

es el protocolo TCP/IP realmente habilitado en su servidor? Está desactivado de manera predeterminada y permanece desactivado en la mayoría de los casos (a menos que lo encienda específicamente).

Simplemente usando una dirección de servidor basada en IP no significa que se conecta mediante el protocolo TCP/IP .... comprueba http://www.connectionstrings.com/sql-server-2008 para una cadena de conexión de ejemplo que se uso de TCP/IP:

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

La clave es Network Library=DBMSSOCN; que le indica al código que se conecte mediante TCP/IP.

+1

TCP/IP está habilitado ... – MCOL

+0

en el servidor y el lado del cliente? ¿Cuál es la secuencia de los protocolos en el lado del cliente? A menos que especifique explícitamente cuál usar, el cliente de SQL Server seleccionará el primero habilitado en la lista. Eso está bajo la "Configuración de SQL Native Client" –

0

Siga este:

inicio -> Programas -> Microsoft SQL Server 2008 -> Herramientas de configuración -> SQL Server Configuration Manager

Configuración de red de SQL Server -> Protocolos para [NombreInstanciaSQL ]

Haga clic derecho en TCP/IP -> Activar

+1

Hecho ... pero no funciona ..... – MCOL

0

Si TCP/IP es ALRE Ady habilitado, entonces parece que su firewall está bloqueando la conexión. Abra los puertos pertinentes y debería funcionar.

Debe verificar el firewall en ambos extremos de la conexión.

17

Lo que normalmente olvido es que incluso si marca tcp como habilitado en SQLServerNetwork-> Protocols para MSSQLServer, aún necesita ir y habilitar las direcciones IP potencialmente diferentes para su servidor. Incluso un servidor con una sola tarjeta de red tendrá direcciones IP múltiples.

  1. Haga clic en los Protocolos para MSSQLServer como se indica anteriormente.
  2. Luego, en el panel de la derecha, habilite TCP/IP.
  3. Ahora haga doble clic en TCP/IP para obtener una ventana de diálogo.
  4. Si desea escuchar todas las direcciones IP del servidor, seleccione Sí en el cuadro Escuchar todo en la primera pestaña Protocolo; de lo contrario
  5. Seleccione la pestaña Direcciones IP y habilite las direcciones IP deseadas configurando Habilitado en Sí.

enter image description here

+0

Si alguien está interesado en cómo hacerlo desde un script: http://promikro.com.pl/2013/09/18/mssql2012expr-en-ip-addrs-problem/ – SOReader

8

También vale la pena que el servicio Explorador de SQL Server se ejecuta como conexiones TCP/IP a utilizar este servicio

+1

Esto es lo que hizo por mí. También encendí "SQL Server Agent" al mismo tiempo. Muchas gracias por esta sugerencia. – DustinA

-1

Y - se puede cambiar en la pantalla de los protocolos de la configuración de SQL Server Manager, pero no tendrá efecto hasta que se reinicie el servicio del servidor sql. Simplemente reinicio - es la única manera de estar seguro (Aliens referencia allí :)

Cuestiones relacionadas