tag net asp asp.net vb.net sql-server-2008 asp.net-4.0 unc

asp.net - net - razor if



Un intento de adjuntar una base de datos autodenominada para el archivo... database1.mdf falló (16)

Recibo el siguiente error al depurar mi sitio web de Visual Studio 2010:

Se produjo un error al intentar adjuntar una base de datos autodenominada para el archivo C: / Users ... / Desktop / Dpp2012New / App_Data / dppdatabase.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.

Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.

Detalles de la excepción: System.Data.SqlClient.SqlException: Error al intentar adjuntar una base de datos llamada automáticamente para el archivo C: / Users ... / Desktop / Dpp2012New / App_Data / dppdatabase.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.

Aquí está mi cadena de conexión de mi web.config :

<connectionStrings> <add name="ApplicationServices" connectionString="data source=./SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|/aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/> <add name="ConnectionString" connectionString="Data Source=./SQLEXPRESS;AttachDbFilename=|DataDirectory|/dppdatabase.mdf;Integrated Security=SSPI" providerName="System.Data.SqlClient"/> </connectionStrings>

Y accedo desde mi sitio web como:

Dim connectionString As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString

La pila muestra la línea de error como:

Dim conn As New SqlConnection(connectionString) Dim dr As SqlDataReader conn.Open() ''This is the error line as per stacktrace

He dado los permisos necesarios a la carpeta anterior, por lo que no puede ser el problema "o el archivo especificado no se puede abrir". Si miramos todas las publicaciones relacionadas con el mismo error en este foro, claramente se puede descubrir la profundidad de este error. Sin embargo, ninguna de las soluciones resuelve mi problema. Algunos de los recursos que he probado son:

  1. http://weblogs.asp.net/scottgu/archive/2005/08/25/423703.aspx
  2. http://blogs.msdn.com/b/webdevelopertips/archive/2010/05/06/tip-106-did-you-know-how-to-create-the-aspnetdb-mdf-file.aspx
  3. http://forums.asp.net/t/1033225.aspx

Espero ansiosamente una solución.


El mío fue un proyecto con el código EF primero y aparece cuando el archivo ha sido eliminado. La ejecución Update-Database de Update-Database de Update-Database desde la consola del Administrador de paquetes hace que la base de datos esté bien.


En la mayoría de los casos, el proyecto de prueba de unidad se separa del proyecto principal. Esto hace que la cadena de conexión generada sea inválida ya que no puede encontrar una carpeta app_data, si su db es local para la solución.

Usted puede simplemente reemplazar el | DataDirectory | con una ruta relativa a su base de datos en su proyecto principal si necesita conectarse desde el proyecto de prueba de su unidad.


He cambiado la carpeta de instalación de los archivos de programa al directorio C mientras instalo la aplicación. entonces mi problema está resuelto


He estado probando la portabilidad de mdf en mi aplicación, así que he estado usando

public DbContext IoDatabase() { var directory = System.IO.Directory.GetCurrentDirectory(); var connectionString = @"Data Source=(localdb)/mssqllocaldb;AttachDbFilename=" + directory + "//App_Data//ITIS.mdf;Integrated Security=True;Connect Timeout=30;"; return new NerdDinners(connectionString); }

con nerdDinners, no recuerdo dónde lo encontré, siendo

public class NerdDinners : DbContext { public NerdDinners(string connString) { Database.Connection.ConnectionString = connString; } }

Entonces puedo usar el tipo de devolución como un DbContext.

Lo principal que encontré fue que GetCurrentDirectory () obtiene la ruta del archivo compilado, no la ruta del archivo del proyecto, por lo que la implementación debe establecerse en GetCurrentDirectory y el mdf debe copiarse en la compilación, no hacer referencia al App_Data real. Incluya su mdf en su proyecto y vaya a propiedades en él. Establezca la copia en el directorio de salida.


Intenta crear tu cadena de conexión de la siguiente manera:

<add name="ECommerce" connectionString="Data Source=(localdb)/v11.0;Initial Catalog=C:/USERS/dL/DESKTOP/DATABASE/MYSHOP.MDF;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False" providerName="System.Data.SqlClient"/>

Está funcionando para mí.


Por favor, compruebe la ruta de su base de datos en la cadena de conexión. Tengo el mismo mensaje de error y más tarde descubrí que el problema es un camino mal escrito.


Se corrigió un error después de que cambié esto

ConfigurationManager.ConnectionStrings[0].ConnectionString

a esto

ConfigurationManager.ConnectionStrings["myconnection"].ConnectionString


También tuve este problema y fue un dolor. Configuré mi cadena de conexión y logré resolver el problema. En la cadena de conexión, reemplacé el valor | DataDirectory | / dbfilename.mdf para la propiedad AttachDbFilename , con la ruta al archivo. | DataDirectory | solo se puede usar si el archivo de la base de datos está en la carpeta App_Data dentro del mismo proyecto.

Así que cambiar la propiedad AttachDbFilename a la ruta directa del archivo mdf, solucionó mi problema.

AttachDbFilename = C: / MyApp / App / DAL / db.mdf

Espero que esto funcione para ti.


Tuve el mismo problema con EF. La solución de ruta absoluta funcionó. Pero no es una buena solución si desea mover su programa a una nueva ubicación. Para mí este fue el problema.

  1. VS busca el archivo mdf en la carpeta de depuración
  2. Hay un archivo .mdf en la carpeta del proyecto, en algún momento VS sincroniza los dos archivos
  3. Por algún motivo, el archivo .mdf no se sincronizó en Depurar

Mi solución:

  1. Copie el archivo .mdf y .ldf en una carpeta temporal
  2. Haga una conexión para ello en vs / servidor explorador
  3. Cuando agrega ADO.NET, use la nueva conexión
  4. VS ofrece copiar el archivo .mdf en la carpeta del proyecto, acéptelo
  5. Ahora el archivo .mdf aparecerá en la carpeta de depuración también
  6. Elimine la conexión para la carpeta temporal, cree una nueva en la carpeta del proyecto

Tuve el mismo problema, y ​​creo que lo descubrí. En la cadena de conexión, asegúrese de que la cadena de conexión se vea así:

<connectionStrings> <add name="ApplicationServices" connectionString="data source=./SQLEXPRESS; Integrated Security=SSPI; AttachDBFilename=|DataDirectory|/aspnetdb.mdf; User Instance=true" providerName="System.Data.SqlClient" /> <add name="NorthwindConnectionString1" connectionString="Data Source=localhost; Initial Catalog=Northwind; Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings>

Ahora, el primero

<add name="ApplicationServices" connectionString="data source=./SQLEXPRESS; Integrated Security=SSPI; AttachDBFilename=|DataDirectory|/aspnetdb.mdf; User Instance=true" providerName="System.Data.SqlClient" />

es lo que aparece por defecto en el web.config. Déjelo sin cambios y agregue otro connectionstring

<add name="NorthwindConnectionString1" connectionString="Data Source=localhost; Initial Catalog=Northwind; Integrated Security=True" providerName="System.Data.SqlClient" />

con tus parámetros Esto es trabajo para mí. Espero eso ayude.


Tuve un error similar, pero usando una conexión configurada en código, en lugar de un archivo de configuración. La solución para mí fue simplemente agregar la parte "Initial Catalog = MyDatabase". Mi código ahora parece ...

DbConnection connection = new SqlConnection(String.Format(@"Data Source=./SQLEXPRESS; Integrated Security=SSPI; AttachDbFilename={0}; User Instance=True; Initial Catalog=IPDatabase;", Location));

La ubicación es una ruta completa a un archivo mdb, que aún no debe existir.


Uno de los errores más molestos al desarrollar aplicaciones web en .Net. Tuve este problema en un proyecto que estaba haciendo hace un año. Esto es lo que funcionó para mí: inicié sesión con una cuenta sa en SQL Management Studio y adjunté la base de datos al explorador de objetos (Bases de datos -> clic derecho -> adjuntar). Luego abrí Security-> Logins -> [myWindowsUsername] y edité la pestaña User Mappings , otorgando derechos de dbowner a la base de datos adjunta.

Estoy seguro de que puede hacer esas cosas sin Management Studio, con comandos de consola, pero no soy tan bueno con T-SQL y no puedo darle consejos sobre eso.


bueno, creo que la razón es que en el directorio de su base de datos, contiene un archivo .mdf que tiene el mismo nombre. Lo mejor es dar la ruta completa, solo puede reemplazar el AttachDbFilename. simplemente obtenga la ruta completa del archivo de base de datos y asígnelo al AttachDbFilename que se encuentra en el archivo app.config.


lo que he encontrado hasta ahora para resolver el problema, si crea el archivo mdf de la siguiente manera, funcionaría perfectamente para Visual Studio.

Haga clic derecho en la conexión de datos en el servidor Explorar-> agregar conexión-> Seleccione el archivo de base de datos de Microsoft SQL Server y elija el nombre de la base de datos y seleccione Aceptar. Entonces este problema no surge. Sigue el video: enlace de youtube


verifique su archivo de configuración web, puede haber más de una cadena de conexión con el mismo nombre


<add name="Connections" connectionString="Data Source=./SQLEXPRESS;AttachDbFilename=|DataDirectory|/Database.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>