¿Cómo soluciono el error 'Proveedor de canalizaciones con nombre, error 40 - No se pudo abrir una conexión a' SQL Server '?

152

Parece que no puedo conectarme a mi base de datos desde un sitio. Me sale este error:

Proveedor de canalizaciones con nombre, error: 40 - No se pudo abrir una conexión a SQL Server

Intenté usar la dirección IP local para conectarme y también una pública. He intentado:

  1. Sí, el sitio puede comunicarse con el servidor
  2. Las canalizaciones con nombre / TCP están habilitadas.
  3. Se permiten conexiones remotas.
  4. Firewall de Windows está apagado
  5. Creó una excepción para el puerto 1433 en el Firewall de Windows.
  6. Habilitado todo en el Administrador de configuración de SQL Server.

¿Qué más puedo hacer aquí?

Damien
fuente
2
Puede valer la pena comprobar si SQL Server está usando el puerto 1433. Puede estar usando algo distinto del puerto predeterminado.
Rajeev Shenoy
También asegúrese, mientras hace ping, que el nombre del servidor esté configurado correctamente (o bien escrito). Este fue el problema en mi caso!
Yann Chabot
@RajeevShenoy: ¿Cómo se puede saber sin conexión (cuál es el problema)? Puedo decirle al puerto, mientras está conectado, usando netstat, pero esto solo funciona si hay una conexión.
MSIS

Respuestas:

117

Resolver este problema es muy fácil:

  1. Ir al panel de control.
  2. buscar servicios
  3. Abra la ventana de servicios locales desde sus resultados de búsqueda
  4. Reinicie su servicio MSSQLSERVER.

Captura de pantalla de los pasos:

Captura de pantalla de los pasos.

Kazem
fuente
1
Wow, el estudio de gestión no comenzaría mi servicio a pesar de que estaba configurado en automático Gracias
johnny 5
Gracias, esto ayudó. ¿Seguiré teniendo que iniciar el servicio desde aquí cada vez? No tenía que hacerlo previamente.
naz786
3
¿Qué pasa si este servicio no está aquí? He instalado SQL Server 17. No veo este servicio ...
Ciaran Gallagher
1
Al hacer una copia de seguridad de la base de datos de 170 GB, el servicio se detuvo. Gracias a esto, solo tomó 5 minutos reiniciar el servidor sql que estaba siendo utilizado por un cliente importante. Muchas gracias.
Shondeslitch
2
Todas las acciones verificadas, pero el reinicio no funcionó para mí. Sigue recibiendo el mismo error.
JayPex el
89

Y la solución más simple: verifique si su barra está de regreso ...

Pasé aproximadamente una hora tratando de descubrir qué le pasa a SERVER / INSTANCENAME cuando todo está configurado correctamente, canalizaciones con nombre, derechos de acceso de usuario ... y de repente me di cuenta, no es una barra oblicua, es una barra invertida ( \).

El horror, la vergüenza ...

mizuki nakeshu
fuente
2
Tuve el problema del OP y resultó que me faltaba la información del SERVIDOR / INSTANCENAME (en su lugar había un punto allí).
LuxDie
@LuxDie ¿Dónde pones SERVER \ INSTANCENAME en y dónde está ubicado?
tom_mai78101
Esta es la clave, no debe olvidarse que debe conectarse a una "base de datos" que está alojada en un servidor. Este error se genera si usa solo el nombre de host del servidor para la conexión e intenta usar el nombre de instancia como base de datos o viceversa.
MichaelHuelsen
Resuelto mi problema Cadena de conexión de trabajo: Server=MyServerName\DOLPHIN=Trusted_Connection=True;Database=DolphinPlatformmientras estaba en desarrollo (C #) me estaba conectando a un servidor MSSQL 2017 instalado localmente, pero cuando fui a implementarlo, el servidor remoto instalado por el proveedor de software se estaba ejecutando como un Instance. Seguí pensando que era un problema de autenticación porque se estaba ejecutando como un servicio o algo así hasta que encontré esto.
Alan
49

Es un proceso de tres pasos realmente después de instalar SQL Server:

  1. Habilite el Administrador de configuración SQL de Canalizaciones con nombre -> Consif.

tuberías con nombre habilitadas

  1. Reinicie el servidor SQL Config Manager -> Servicios de SQL Server -> SQL Server (SQLEXPRESS) -> Haga clic derecho -> Reiniciar

  2. Utilice los nombres de instancia y servidor adecuados (¡ambos son necesarios!) Normalmente, esto sería . \ SQLEXPRESS , por ejemplo, vea la captura de pantalla del cuadro de diálogo de conexión QueryExpress.

ingrese la descripción de la imagen aquí

Ahí tienes.

Pompair
fuente
ya que tiene una respuesta de puntaje alto relativamente tardía. Qué es, cuando tiene un servicio que se comunica bien con su servidor sql, luego de 3 horas de funcionamiento, comienza a recibir este error que persiste durante 10 minutos más o menos. Luego, el servicio continúa ejecutándose como antes del error. ???
TS
Esto es para conexiones locales? ¿Qué es adicionalmente necesario para que funcionen las conexiones remotas a través de la red?
Kissaki
19

Acababa de instalar el desarrollador SQL SERVER 2012. Cuando estaba creando mi primer paquete SSIS, recibí este error de canalización cuando intentaba crear una tarea de conexión de datos en SQL Server 2012 Data Tools en el cuadro Connection Manager. Resolví con la ayuda de la publicación anterior.

Si elige una instancia con nombre y llama a su instancia con nombre SSQDatabase1 y el nombre de su PC es PCX1. Debe ingresar PCX1 \ SSQDatabase1 no solo SSQDatabase1 o recibirá el error de canalización con nombre.

rockz1
fuente
16

Un hilo en MSDN Social, Re: Proveedor de canalizaciones con nombre, error: 40 - No se pudo abrir una conexión a SQL Server , tiene una lista bastante decente de posibles problemas relacionados con su error. Es posible que desee ver si alguno de ellos podría ser lo que está experimentando.

  • Cadena de conexión incorrecta, como usar SqlExpress
  • Canalizaciones con nombre (NP) no estaba habilitado en la instancia de SQL
  • La conexión remota no estaba habilitada
  • El servidor no se inició o señala que no hay un servidor real en su cadena de conexión
  • Otros motivos, como el contexto de seguridad incorrecto
  • pruebe las pruebas básicas de conectividad entre las dos máquinas en las que está trabajando
Kan
fuente
Pasó por ellos, desafortunadamente, eso no ayudó. :(
Damien
44
Está bien, resuelve esto. Resulta que cuando instalé el servidor hice una instancia con nombre. No puede conectarse a una instancia con nombre de la misma manera que lo haría con una instancia predeterminada. Entonces, fuente de datos: localhost \ nombre de instancia que funciona. Todavía no pude ponerlo en marcha con una dirección IP, pero me alegro finalmente de conectarme.
Damien
Me alegra saberlo, pero por curiosidad, ¿puedes conectarte a él usando ip.ip.ip.ip/NamedInstance?
Khan
10

Acabo de activar TCP / IP, VIA, canalizaciones con nombre en SQL Server Configuration Manager, mi problema se resolvió remitir este para obtener más información Resolución de canalizaciones con nombre de error 40

Samanth
fuente
enlace muerto alguna información sobre lo que dijo?
Kissaki
7

Usar SERVIDOR \\ NOMBRE DE INSTANCIA. El uso de una barra invertida doble en mi proyecto resolvió mi problema.

Tamizh venthan
fuente
Este también funcionó para mí, pero ¿alguien puede decirme por qué funcionó?
GWR
Diría que la cadena se escapa, pero depende del contexto
mizuki nakeshu
Si esa cadena está en código C #, @"server\instance"o "server\\instance"debería funcionar. Si está en un archivo de configuración, entonces solo desea el servidor de texto sin formato \ instancia.
Denise Skidmore
7

Gracias a Damian ...

Tuberías con nombre TCP / IP ... ambas habilitadas

Web Config .... (para localhost)

<add name="FooData" connectionString="Data Source=localhost\InstanceName;Initial Catalog=DatabaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
Terri
fuente
5

Tenía el mismo problema Pasé como 6 horas cuando tuve que migrar algunos servidores. Intenté todas las sugerencias disponibles sobre este tema y otros.

¡La solución fue tan simple como reiniciar el servidor!

halloweenlv
fuente
1
Lamentablemente, restablecer el servidor también solucionó el problema para mí. Todas las otras sugerencias mencionadas se intentaron en vano.
MrShmee
3

en mi caso, tenía un servidor independiente, cambié el puerto predeterminado del puerto del servidor sql 1433 en el administrador de configuración a algún número y reinicié el servicio de servicio sql para que surta efecto, pude conectarme al servidor sql a través del estudio de administración si inicio sesión al servidor pero no pude conectarme desde mi máquina local a través del servidor sql, recibí el error:

Se produjo un error relacionado con la red o específico de la instancia al establecer una conexión con SQL Server. El servidor no se encontró o no estaba accesible. Verifique que el nombre de la instancia sea correcto y

que SQL Server está configurado para permitir conexiones remotas. (proveedor: proveedor de canalizaciones con nombre, error: 40 - No se pudo abrir una conexión a SQL Server) (Microsoft SQL Server, error: 5)

Revisé y verifiqué todo lo siguiente

-Tuberías con nombre / TCP está habilitado. -Las conexiones remotas están permitidas. -Windows Firewall está apagado -Creó una excepción para portin Windows Firewall (esto no era necesario en mi caso ya que el servidor está en la misma red de subred). -Habilitado todo en el Administrador de configuración de SQL Server.

luego cambié el número de puerto al valor predeterminado 1433 y reinicié el servicio del servidor sql, y el problema se resolvió y puedo conectar el servidor sql desde mi estudio de administración local.

balu
fuente
3

Yo tuve el mismo problema. Utilizo el MSSQL Server Management Studio 2017 y resolví este problema siguiendo estos pasos:

  1. Compruebe si funcionan bien los servicios de SQL Server Services o no.
  2. Compruebe también si funciona SQL Server en buen estado (MSSQLSERVER).
  3. Compruebe también si funciona bien el navegador SQL Server.
  4. Reiniciar SQL Server (MSSQLSERVER)

y lo arreglé

Murat
fuente
3
¡Gracias por esto! El navegador SQL Server fue deshabilitado, ¡así que esto me lo arregló!
Sam
2

Pruebe los siguientes pasos:

  1. Abra la ventana Servicios (abra "cuadro de ejecución" y escriba services.msc).

  2. Buscando servicios SQL (con prefijo SQL).

  3. Inícielos (si no puede comenzar. Vaya al paso 4).

  4. Haga clic derecho en cada servicio -> Propiedades -> Cambiar a la pestaña "Iniciar sesión" -> elija iniciar sesión como "Local ..." -> 0K. Luego inicie los servicios SQL nuevamente.

Prueba Open SQL y conecta la base de datos.

Harry Ho
fuente
2

Lo más probable es que su nombre de base de datos no sea correcto, verá el nombre del servidor en VS como "DESKTOP-0I14BKI" pero si abre SSMS verá DESKTOP-0I14BKI \ SQLBLAHBLAH , simplemente agregue " \ SQLBLAHBLAH " (nombre de instancia ) a su "nombre de servidor" en las propiedades de conexión VS.

Verá : ingrese la descripción de la imagen aquí

Arreglar: ingrese la descripción de la imagen aquí

Scott
fuente
2

TL; DR; Su instancia de SQL Server está utilizando puertos dinámicos que no funciona. Forzar a SQL Server a usar el puerto estático # 1433.

Detalles completos : en primer lugar, este problema es más probable si tiene una combinación de instancias predeterminadas y con nombre o solo con nombre (que fue mi caso).

Concepto clave : cada instancia de Microsoft SQL Server instalada en una computadora utiliza un puerto diferente para escuchar las solicitudes de conexión entrantes. La instancia predeterminada de SQL Server usa el puerto n. ° 1433. A medida que instale instancias con nombre, comenzarán a usar puertos dinámicos, lo que se decide en el momento del inicio del servicio de Windows correspondiente a la instancia de SQL Server con nombre.

Mi código estaba fallando (con el código de error 40) para conectarse a la única instancia de SQL Server con nombre que tenía en mi VM. Puede probar a continuación las posibles soluciones:

Solución n. ° 1 : el código del cliente que intenta conectarse a la instancia de SQL Server requiere la ayuda del servicio del navegador de SQL Server para determinar el número de puerto en el que su instancia con nombre escucha las conexiones entrantes. Asegúrese de que el servicio del navegador SQL se esté ejecutando en su computadora.

Solución n. ° 2 : Verifique el n. ° de puerto (en color amarillo) que su instancia de SQL Server nombrada está utilizando desde el administrador de configuración de SQL Server como se muestra en la siguiente instantánea:

ingrese la descripción de la imagen aquí

Use ese número de puerto explícitamente en su cadena de conexión o como se sqlcmdmuestra a continuación:

sqlcmd -s mymachinename,11380 -i deleteDB.sql -o SQLDelete.txt

Solución n. ° 3 : obligue a su instancia con nombre a usar el puerto n. ° 1433, que se usa de manera predeterminada. Recuerde que esto solo funcionará si no tiene ninguna instancia predeterminada de SQL Server en su computadora, ya que la instancia predeterminada de SQL Server la usaría utilizando el puerto # 1433 ya. El mismo número de puerto no puede ser utilizado por dos servicios diferentes de Windows.

Marque el TCP Dynamic portscampo en blanco y el TCP Portcampo en 1433.

ingrese la descripción de la imagen aquí

Cambie el número de puerto en su cadena de conexión como se muestra a continuación:

sqlcmd -s mymachinename\instanceName -i deleteDB.sql -o SQLDelete.txt

O

sqlcmd -s mymachinename,1433 -i deleteDB.sql -o SQLDelete.txt

Nota : Cada cambio en la configuración de TCP / IP requiere el reinicio del servicio de Windows correspondiente.

Curiosamente, después de resolver el error cuando volví a la configuración del puerto dinámico para reproducir el mismo error, no sucedió. No estoy seguro de por qué.

Lea a continuación los hilos interesantes para saber más sobre los puertos dinámicos de SQL Server:

¿Cómo configurar el puerto del servidor SQL en varias instancias?

¿Cuándo es un puerto dinámico "dinámico"?

¿Cuándo usar un puerto dinámico TCP y cuándo puerto TCP?

Obtuve pistas para la solución de mi problema de este blog.

RBT
fuente
1

En mi caso, abrí SQL Server Management Studio y busqué SQLEXPRESS en mi motor de base de datos. Tenía dos instancias y seleccioné la correcta.

ingrese la descripción de la imagen aquí

DivyaMenon
fuente
1

Si está trabajando con Asp.net core y está usando appsettings.json que escriba el servidor como localhost y luego escriba el nombre de instancia sql para la canalización con nombre habilitada como esta

  "ConnectionString": {
    "dewDB": "server=localhost\\dewelopersql;database=dewdb;User ID=sa;password=XXXXX",
  },
Hamit YILDIRIM
fuente
1

Solución muy simple

uso (local)\InstanceName eso es todo. Funcionó para mí.

ProgrammingNinja
fuente
1

Si intentó reiniciar el servicio MSSQLSERVER y no funcionó, esta podría ser una solución:

Si está utilizando SQLExpress, el nombre de su servidor debe ser el siguiente ComputerName \ SQLExpress. Sin embargo, para SQLDeveloper, no tiene que corregir SQLDeveloper después de su ComputerName.

Asim Okby
fuente
0

Después de seguir todos los pasos mencionados aquí , si aún no se conecta, intente agregar el DNS con la dirección IP en el archivo de hosts en la carpeta, etc. Agregar una dirección IP en lugar del nombre DNS en la cadena de conexión debería ser una solución temporal para verificar si la conexión realmente funciona.

usuario3307830
fuente
0

Intenté usar la dirección IP local para conectarme y también una pública. He intentado:

Sí, el sitio puede comunicarse con el servidor. Canalizaciones con nombre / TCP está habilitado. Se permiten conexiones remotas. Firewall de Windows está desactivado. Se creó una excepción para el puerto 1433 en Windows Firewall. Habilitado todo en el Administrador de configuración de SQL Server.

me aseguré e hice lo anterior también y solo quiero compartir que el DOBLE RETROCESO

oBuilder.DataSource = "SPECIFICPCNAME \ SQLEXPRESS";

El uso de UNA SOLA RETROCESO dio como resultado un error de compilación, es decir: Error 1 Secuencia de escape no reconocida

Espero que esto ayude al próximo tipo: sacrifiqué la cena, la merienda de medianoche y el momento culminante de la NBA para resolver esto (vergüenza)

Gracias a [Tamizh venthan] ^ _ ^

Ronan Masangcay
fuente
0

Habilite TCP / Ip, protocolo canalizado yendo a Administración de computadoras -> SQL y servicios, asegúrese de que el servicio esté activado. Enbale el puerto en el cortafuegos. Intente iniciar sesión a través del símbolo del sistema -> como administrador; Por último, el nombre de usuario debe ser (local) \ SQLEXPRESS. Espero que esto ayude.

VaishB
fuente
0

Abra el Administrador de configuración de SQL Server

  1. Seleccione SQL Server Services desde la derecha.
  2. Encuentre su servidor desde la derecha y vaya a sus propiedades (con un clic derecho)
  3. Cambie el método de inicio de sesión a Sistema local.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

zapoo
fuente
0

Tuve el mismo problema y lo resolví desactivando mi firewall (ESET).

El primer paso para resolver este problema debería ser hacer ping a su propia computadora desde otra computadora. Si tiene el firewall activado, es posible que no pueda hacer ping a usted mismo. Intenté hacer ping a mi propia PC, luego fallé el ping (no obtuve respuesta del servidor)

Uğur Gümüşhan
fuente
0

He sugerido los pasos a continuación para resolver su problema. ¿Cómo soluciono el error 'Proveedor de canalizaciones con nombre, error 40 - No se pudo abrir una conexión a' SQL Server '

  1. Compruebe si funcionan bien los servicios de SQL Server Services o no.
  2. Compruebe también si funciona SQL Server en buen estado (MSSQLSERVER) .
  3. Compruebe también si funciona bien el navegador SQL Server .
  4. Elimine todos los alias anteriores , ahora cree nuevos alias según sus requisitos.
  5. Ahora verifique el funcionamiento del puerto predeterminado de SQL Server 1433
  6. Luego haga clic en Protocolos de cliente, por ejemplo, luego haga clic en TCP / IP , ahora haga clic con el botón derecho del mouse, abra la Propiedad, aquí puede asegurarse de que funciona bien su puerto predeterminado SQL 1433 .
  7. Abra su SQL Server Management Studio , luego haga clic derecho, haga clic en la opción " Propiedad " y luego haga clic en la pestaña Conexiones , luego finalmente marque Permitir conexiones remotas a este servidor .
  8. Verifique si funciona correctamente o su Ping IP Host .
Anjan Kant
fuente
0

Intenté agregar una nueva conexión en VS2015. Ninguna de las sugerencias aquí funcionó. Sospechando algún tipo de error en el asistente, especialmente porque SSMS pudo conectarse bien, decidí intentarlo y engañarlo. ¡Funcionó!

  1. En lugar de agregar la conexión, use "Crear nueva base de datos de SQL Server". Ingrese el nombre de su servidor y un nombre aleatorio para la nueva base de datos, por ejemplo, "prueba".

  2. Suponiendo que esto tiene éxito, abra el Explorador de servidores en VS, ubique la conexión en Conexiones de datos, haga clic con el botón derecho y seleccione Modificar conexión.

  3. Cambie "prueba" (del paso 1) al nombre de la base de datos existente a la que desea conectarse. Haga clic en "Probar conexión". ¡Esta vez debería funcionar!

  4. Elimine la base de datos temporal que creó en el paso 1.

Roman Starkov
fuente
0

Tengo una solución más, creo. Recientemente había cambiado el nombre de mi computadora, así que, después de no poder conectarme después de probar todos los métodos anteriores. Cambié el nombre del servidor. Nombre del servidor => (busque más) => en el motor de la base de datos, se encontró un nuevo servidor igual que el nuevo nombre de las computadoras. Esto funcionó, y la vida es buena otra vez.

tauqr_ahmd
fuente
0

Luché durante años en este antes de darme cuenta de mi error: había usado comas en lugar de punto y coma en la cadena de conexión

Andy
fuente
0

Tuve este problema, pero ninguna de las sugerencias anteriores lo solucionó.

Estaba viendo este problema cuando implementé mi sitio web en IIS. La solución fue ir a la configuración avanzada del grupo de aplicaciones predeterminado y cambiar la propiedad de identidad de la predeterminada a Administrador.

Ste Brown
fuente
0

Para mí fue un problema de firewall.

Primero debe agregar el puerto (como 1444 y quizás 1434) pero también

C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe

y

%ProgramFiles%\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\Binn\SQLAGENT.EXE

La segunda vez que recibí este problema es cuando volví al firewall, ¡las rutas no eran correctas y necesitaba actualizar el formulario 12 a 13! Simplemente haciendo clic en Examinar en la pestaña Programas y servicios ayudó a darse cuenta de esto.

Finalmente, intente ejecutar el comando

EXEC xp_readerrorlog 0,1, "no se pudo registrar el nombre principal del servicio", nulo

Para mí, me devolvió la razón del error

Dave
fuente
0

Intenté casi todo en esta página, pero tuve algunos problemas subyacentes que en realidad eran lo que debía resolverse. No pude hacer ciertas cosas como abrir el Administrador de configuración de SQL Server, que terminó siendo archivos corruptos / faltantes del proveedor WMI.

Hay muchas formas tediosas de resolver estos problemas de acuerdo con lo que he leído, pero la herramienta de tweaking.com pudo eliminar y reemplazar / reparar mis archivos de proveedor WMI (Instrumental de administración de Windows).

Solía ​​reparar computadoras y, en general, la herramienta tweaking.com realmente me impresionó, y se sugirió en una de las páginas del foro de errores de WMI que visité.

Después de solucionar este problema, pude conectarme a mi base de datos SQL, tanto local como remotamente.

Espero que esto ayude a alguien.

Elon Zito
fuente