Estaba usando un .mdf
para conectarse a un database
y entityClient
. Ahora quiero cambiar la cadena de conexión para que no haya ningún .mdf
archivo.
¿Es connectionString
correcto lo siguiente ?
<connectionStrings>
<!--<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\NData.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />-->
<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;Initial Catalog=NData;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
Porque siempre recibo el error:
El proveedor subyacente falló en la apertura
c#
sql-server
entity-framework
database-connection
senzacionale
fuente
fuente
Integrated Security
de la cadena de conexiones, creé un usuario y me aseguré de que tuvierasysadmin
permisos y agregué a ese usuario a la cadena de conexiones.Respuestas:
Tuve este error y encontré algunas soluciones:
Mirando su cadena de conexión, parece válida. Encontré esta publicación de blog , el problema aquí es que estaban usando Seguridad Integrada . Si está ejecutando en IIS, su usuario de IIS necesita acceso a la base de datos.
Si está utilizando Entity Framework con Transactions , Entity Framework abre y cierra automáticamente una conexión con cada llamada a la base de datos. Entonces, cuando usa transacciones, está tratando de extender una transacción a través de múltiples conexiones. Esto se eleva a MSDTC .
( Consulte esta referencia para obtener más información ) .
Cambiar mi código a lo siguiente lo arregló:
fuente
context.Connection.Open()
no ayudó a resolver mi problema, así que intenté habilitar "Permitir clientes remotos" en la configuración de DTC, no más errores.En Windows 7, puede abrir la configuración de DTC ejecutando dcomcnfg, Servicios de componentes -> Computadoras -> Mi computadora -> Coordinador de transacciones distribuidas -> Haga clic derecho en DTC local -> Seguridad.
fuente
Debería ver innerException para ver cuál es la causa interna del lanzamiento del error.
En mi caso, el error original fue:
que se resolvió dando permiso completo al usuario actual para acceder a archivos relacionados
mdf
yldf
utilizando las propiedades de los archivos.fuente
Encontré que el problema era que tenía la ruta del servidor dentro de la cadena de conexión en una de estas variantes:
Cuando realmente debería tener:
Por alguna razón, recibí el error cada vez que tenía dificultades para localizar la instancia de SQL.
fuente
Este es un problema común solamente. Incluso me he enfrentado a 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:
Se resolvió cambiando
connectionString
en el archivo de configuración:Otros errores comunes podrían ser:
fuente
Integrated Security=True
y reemplácelouser id=sa;password=notmyrealpassword
para solucionar este problema de implementación.Cuando reciba esta excepción, asegúrese de expandir los detalles y ver los detalles internos de la excepción, 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 la Seguridad integrada (el contexto del usuario de Windows conectado) o una cuenta SQL individual, asegúrese de que el usuario tenga acceso adecuado en 'Seguridad' para la base de datos a la que está intentando acceder para evitar este problema.
fuente
inner exception
es el problema del estado? Esa fue mi respuesta aquí, que proporcionará los detalles adicionales ocultos necesarios para comprender el verdadero problema subyacente. Elinner exception
no va a comprobar que tiene el inicio de sesión correcta - no es una excepción una aclaración.Login failed for user 'user'.
NT AUTHORITY\NETWORK SERVICE
a la lista de usuarios de SQL Server. Todavía recibí el mismo error de inicio de sesión rechazado.data source
ahostname\SQLEXPRESS
. Lo había intentadohostname
y.\SQLEXPRESS
anteriormente. Luego pude conectarme con seguridad integrada. Curiosamente, esto es lo opuesto a la respuesta de dooburt . Curiosamente, el nombre de usuario de SQL Server nunca pudo conectarse desde Visual Studio.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.
fuente
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 derecho e inicie el servicio
Espero que le ayudará.
fuente
Esto también puede suceder si restaura una base de datos y el usuario ya existe con un esquema diferente, dejándolo incapaz de asignar los permisos correctos.
Para corregir esta ejecución:
fuente
Publiqué un problema similar aquí, trabajando con una base de datos SQL 2012 alojada 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".
fuente
Asegúrese de que cada valor de elemento en la cadena de conexión suministrada sea correcto. En mi caso, recibí el mismo error porque el nombre del catálogo (nombre de la base de datos) especificado en la cadena de conexión era incorrecto.
fuente
Tuve un problema similar con excepciones debido al estado de conexión, luego me di cuenta de que mi variable de clase de servicio de dominio estaba 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.
Creo también que cada llamada de cliente resultó en un nuevo hilo, por lo que múltiples hilos que acceden a la misma instancia de servicio de dominio equivale a un choque de trenes.
fuente
Tuve el mismo problema, pero lo que funcionó para mí fue eliminar esto de la cadena de conexión:
persist security info=True
fuente
Tuve un error similar con la excepción interna que se muestra a continuación:
Podría resolverlo habilitando la configuración de seguridad DTC.
Vaya a Propiedades de DTC, en la pestaña Seguridad, verifique lo siguiente
fuente
Si aparece este error en una aplicación web ASP.NET, además de otras cosas mencionadas, verifique lo siguiente:
fuente
Me deshice de esto reiniciando IIS , pero aún lo uso
Integrated Authentication
en la cadena de conexión.fuente
La definición de una nueva regla de Firewall de Windows para SQL Server (y para el puerto 1433) en la máquina del servidor resuelve este error (si su nombre de servidor, nombre de usuario o contraseña no es incorrecto en su cadena de conexión ...).
fuente
Un error común que cometí porque estaba moviendo la aplicación de una PC a otra y nada de lo anterior funcionó fue que olvidé copiar la cadena de conexión a App.Config y Web.Config.
fuente
Tuve un problema similar: en mis ejecuciones de casos de prueba siempre recibí este error. Descubrí que mi "Servicio de transacciones distribuidas" no se inició (ejecute: services.msc -> inicie el "Servicio de transacciones distribuidas" (lo mejor es configurarlo para que se inicie automáticamente)). Después de hacer eso, funcionó a las mil maravillas ...
fuente
Copié los archivos de la base de datos (.mdf / .ldf) a la carpeta App_Data para eliminar esta excepción.
fuente
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.
fuente
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.
fuente
Este error ocurrió repentinamente de la nada en uno de nuestros sitios. ¡En mi caso, resultó que la contraseña del usuario SQL había expirado! Desmarcar el cuadro de caducidad de la contraseña en SQL Server Management Studio hizo el truco.
fuente
Tuve el mismo problema hace unos días, usando "Integrated Security = True"; en la cadena de conexión debe ejecutar la identidad del grupo de aplicaciones en "sistema local". Seguro que esto no es recomendable, pero para probarlo funciona.
Así es como puede cambiar la identidad en IIS 7: http://www.iis.net/learn/manage/configuring-security/application-pool-identities
fuente
En IIS, configure la cuenta de usuario o cuenta de administrador de la Identidad de grupo de aplicaciones o la cuenta de hormiga que tiene permiso para realizar la operación en esa base de datos.
fuente
En mi caso, tuve 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
fuente
Tengo el mismo error que encontré cuando cambio mi stringString a una nueva fuente de datos. Olvidé cambiar el nombre de usuario y contraseña para la nueva base de datos.
fuente
También he tenido este error si no se especifica el nombre de la instancia de SQL Server y el host SQL tiene instaladas varias instancias de SQL. Aquí hay un par de ejemplos para aclarar:
La siguiente cadena de conexión da como resultado la excepción "El proveedor subyacente falló en Abrir" sin excepción interna en una aplicación .NET WebForms:
La siguiente cadena de conexión se ejecuta como se espera en una aplicación .net WebForms donde el entorno SQL tiene múltiples instancias. Raro, lo sé, pero tengo algunas instancias SQL diferentes en mi cuadro de desarrollo para dar cabida a diferentes proyectos:
fuente
en mi caso, la dirección del servidor ha sido cambiada por el administrador del servidor, así que tuve que cambiar la cadena de conexión a la nueva dirección del servidor
fuente
Tuve este problema porque el inicio de sesión del grupo de aplicaciones con 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.
Vaya 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.
Reinicie su sitio e intente nuevamente.
fuente