Error MSSQL ‘El proveedor subyacente falló en Abrir’

Estaba usando un .mdf para conectarme a una database y entityClient . Ahora quiero cambiar la cadena de conexión para que no haya ningún archivo .mdf .

¿Es correcto el siguiente connectionString ?

  <!---->  

Porque siempre obtengo el error:

El proveedor subyacente falló en la apertura

Tuve este error y encontré algunas soluciones:

Al mirar su cadena de conexión, parece válida. Encontré esta publicación en el blog , el problema aquí es que estaban usando Seguridad integrada . Si se ejecuta en IIS, su usuario de IIS necesita acceso a la base de datos.

Si está utilizando Entity Framework con Transactions , Entity Framework se abre y cierra automáticamente con cada llamada a la base de datos. Por lo tanto, cuando usa transacciones, está intentando distribuir una transacción a través de múltiples conexiones. Esto eleva a MSDTC .

( Consulte esta referencia para más información ) .

Cambiar mi código a lo siguiente lo solucionó:

 using (DatabaseEntities context = new DatabaseEntities()) { context.Connection.Open(); // the rest } 

context.Connection.Open() no ayudó a resolver mi problema, así que intenté habilitar “Permitir clientes remotos” en la configuración de DTC, no hubo más errores.

En Windows 7 puede abrir la configuración de DTC ejecutando dcomcnfg, Servicios de componentes -> Equipos -> Mi PC -> Coordinador de transacciones distribuidas -> Haga clic con el botón derecho en DTC local -> Seguridad.

Encontré que el problema era que tenía la ruta del servidor dentro de la cadena de conexión en una de estas variantes:

 SERVER\SQLEXPRESS SERVER 

Cuando realmente debería tener:

 .\SQLEXPRESS 

Por alguna razón, recibí el error cada vez que tenía dificultades para localizar la instancia de SQL.

Debería ver innerException para ver cuál es la causa interna de lanzamiento de error.

En mi caso, el error original fue:

No se puede abrir el archivo físico “D: \ Projects2 \ xCU \ xCU \ App_Data \ xCUData_log.ldf”. Error 5 del sistema operativo: “5 (Acceso denegado)”. Se produjo un error al intentar adjuntar una base de datos autodenominada para el archivo D: \ Projects2 \ xCU \ xCU \ App_Data \ xCUData.mdf. Existe una base de datos con el mismo nombre, o el archivo especificado no puede abrirse, o está ubicado en el recurso compartido UNC.

que resolvió otorgando permiso completo al usuario actual para acceder a los archivos mdf y ldf relacionados utilizando las propiedades de los archivos.

Este es un problema común solamente. Incluso yo he enfrentado este problema. En la máquina de desarrollo, configurada con autenticación de Windows, funciona perfectamente:

  

Una vez alojado en IIS con la misma configuración, recibí este error:

El proveedor subyacente falló en la apertura

Fue resuelto cambiando connectionString en el archivo de configuración:

  

Otros errores comunes podrían ser:

  1. El servicio de la base de datos podría ser detenido
  2. Atributos del origen de datos que apuntan a una base de datos local con autenticación de Windows y alojados en IIS
  3. El nombre de usuario y la contraseña podrían estar equivocados.

Cuando reciba esta excepción, asegúrese de ampliar los detalles y ver los detalles de la excepción interna, ya que proporcionará detalles sobre por qué falló el inicio de sesión. En mi caso, la cadena de conexión contenía un usuario que no tenía acceso a mi base de datos.

Independientemente de si usa Integrated Security (el contexto del usuario de Windows conectado) o una cuenta de SQL individual, asegúrese de que el usuario tenga acceso adecuado en “Seguridad” para la base de datos a la que intenta acceder para evitar este problema.

Tuve un problema similar con SQL Server Express Edition en Windows Server 2003 . Simplemente agregué el servicio de red como usuario en la seguridad de la base de datos.

Esto también puede suceder si restaura una base de datos y el usuario ya existe con un esquema diferente, lo que le impide asignar los permisos correctos.

Para corregir esta ejecución:

 USE your_database EXEC sp_change_users_login 'Auto_Fix', 'user', NULL, 'cf' GO EXEC sp_change_users_login 'update_one', 'user', 'user' GO 

El servicio SQL Server Express no se configuró para iniciarse automáticamente.

1) Vaya al panel de control 2) Herramientas administrativas 3) Servicio 4) Configure SQL Server Express para que se inicie automáticamente haciendo clic en él 5) Haga clic con el botón derecho e inicie el servicio

Espero que le ayudará.

Asegúrese de que el valor de cada elemento en la cadena de conexión que se suministra sea correcto. En mi caso, recibía el mismo error porque el nombre del catálogo (nombre de la base de datos) especificado en la cadena de conexión era incorrecto.

Tuve un problema similar con las excepciones debido al estado de conexión, luego me di cuenta de que tenía mi variable de clase de servicio de dominio marcada como estática (por error).

Supongo que una vez que la biblioteca de servicios se carga en la memoria, cada nueva llamada termina usando el mismo valor de variable estática (instancia de servicio de dominio), lo que causa conflictos a través del estado de conexión.

También creo que cada llamada de cliente dio como resultado un nuevo hilo, por lo que varios hilos que accedían a la misma instancia de servicio de dominio se equiparaban a un accidente de tren.

Publiqué un problema similar aquí, trabajando con un db SQL 2012 alojado en Amazon RDS. El problema estaba en la cadena de conexión. Tenía las propiedades Nombre de la aplicación” y “Aplicación” allí. Una vez que los quité, funcionó.

Entity Framework 5 y Amazon RDS: “El proveedor subyacente falló en Open”.

Tuve un error similar con la excepción interna de la siguiente manera:

la operación no es válida para el estado de la transacción

Podría resolverlo habilitando la configuración de seguridad de DTC.

Vaya a Propiedades de DTC, en la pestaña Seguridad, verifique a continuación

  • Acceso DTC a la red
  • Permitir RemoteClients
  • Comunicación del gestor de transacciones
  • Permitir entrada
  • Permitir saliente

Si obtiene este error en una aplicación web ASP.NET, además de otras cosas mencionadas, verifique lo siguiente:

  1. Permisos de seguridad del usuario de la base de datos (que los usuarios tienen acceso a su base de datos.
  2. Compruebe su grupo de aplicaciones en IIS y asegúrese de que sea el correcto al que se le permite el acceso a su base de datos.

Me deshice de esto reiniciando IIS , pero aún usando Integrated Authentication en la cadena de conexión.

La definición de una nueva regla de Windows Firewall para SQL Server (y para el puerto 1433) en el equipo servidor resuelve este error (si su nombre de servidor, nombre de usuario o contraseña no están equivocados en su cadena de conexión …).

Tuve el mismo problema pero lo que funcionó para mí fue eliminar esto de Connection String:

persist security info=True

Un error común que hice porque estaba moviendo la aplicación de una PC a otra y ninguna de las anteriores funcionó fue que olvidé copiar la cadena de conexión a App.Config y Web.Config!

Tuve un problema similar: en mis ejecuciones de casos de prueba siempre recibí este error. Descubrí que mi “Servicio de transacciones distribuidas” no se había iniciado (ejecute: services.msc -> start “Distributed Transaction Service” (lo mejor es configurarlo para que comience automáticamente)). Después de que hice eso, funcionó como un encanto …

Copié los archivos de la base de datos (.mdf / .ldf) a la carpeta App_Data para deshacerme de esta excepción.

Yo también estaba enfrentando el mismo problema. Ahora lo he hecho eliminando el nombre de usuario y la contraseña de la cadena de conexión.

Para mí fue solo un simple error:

Utilicé Amazon EC2 , y utilicé mi dirección IP elástica en la cadena de conexión, pero cuando cambié las direcciones IP olvidé actualizar mi cadena de conexión.

Tuve este error repentinamente inesperado en uno de nuestros sitios. ¡En mi caso, resultó que la contraseña del usuario de SQL había expirado! ¡Desconectar el cuadro de caducidad de la contraseña en SQL Server Management Studio hizo el truco!

Tuve el mismo problema hace unos días, usando “Integrated Security = True”; en la cadena de conexión necesita ejecutar la identidad del grupo de aplicaciones en “sistema local”. Claro que esto no es recomendable, pero para las pruebas hace el trabajo.

Así es como puede cambiar la identidad en IIS 7: http://www.iis.net/learn/manage/configuring-security/application-pool-identities

En IIS, configure el usuario de la cuenta de servicio de la aplicación como cuenta de servicio o cuenta de administrador o cuenta de ant que tenga permiso para realizar la operación en esa base de datos.

En mi caso, tenía una discrepancia entre el nombre de la cadena de conexión que estaba registrando en el constructor del contexto y el nombre en mi web.config. Error simple causado por copiar y pegar: D

  public DataContext() : base(nameOrConnectionString: "ConnStringName") { Database.SetInitializer(null); } 

Tengo el mismo error que encontré cuando cambié ConnectionString al nuevo Data Source. Olvidé cambiar el nombre de usuario y el passowrd para la nueva base de datos.

También he tenido este error si el nombre de la instancia de SQL Server no se especifica y el host SQL tiene instaladas varias instancias de SQL. Aquí hay un par de ejemplos para aclarar:

La cadena de conexión a continuación da como resultado la excepción “El proveedor subyacente falló en Abrir” sin excepción interna en una aplicación WebForms de .NET:

  connectionString="metadata=res://*/Entities.csdl|res://*/Entities.ssdl|res://*/Entities.msl;provider=System.Data.SqlClient;provider connection string="Data Source=localhost;Initial Catalog=Entities;User ID=user;Password=password;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" 

La siguiente cadena de conexión se ejecuta como se espera en una aplicación de .NET WebForms donde el entorno SQL tiene múltiples instancias. Rare, lo sé, pero tengo algunas instancias de SQL diferentes en mi cuadro de desarrollo para acomodar diferentes proyectos:

  connectionString="metadata=res://*/Entities.csdl|res://*/Entities.ssdl|res://*/Entities.msl;provider=System.Data.SqlClient;provider connection string="Data Source=localhost\SQLSERVER2014;Initial Catalog=Entities;User ID=user;Password=password;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" 

en mi caso, la dirección del servidor ha sido modificada por el administrador del servidor, así que tuve que cambiar la cadena de conexión a la nueva dirección del servidor

Tuve este problema porque el inicio de sesión del grupo de aplicaciones en el que se ejecutaba esta aplicación había cambiado.

En IIS:

  • Encuentre el grupo de aplicaciones haciendo clic en su sitio y vaya a Configuración básica.

  • Ir a Grupos de aplicaciones.

  • Haga clic en el grupo de aplicaciones de su sitio.

  • Haga clic en Configuración avanzada.

  • En Identidad, ingrese el nombre de usuario y la contraseña de la cuenta.

  • Reinicia tu sitio y vuelve a intentarlo.

    Intereting Posts