Pregunta

Tengo una aplicación ASP.NET 3.5 con el archivo de base de datos SQL 2005 Express un .mdf en su carpeta App_Data. Lets llamada que Foo.mdf. Por sí solo el ASP.NET aplicación puede conectarse a la base de datos sin problemas. Hasta aquí todo bien.

Entonces, si instalo SQL Management Server Studio Express en el servidor y se inicia, se encuentra la instancia SQLEXPRESS local y se conecta a él, pero no muestra Foo.mdf en la lista de bases de datos.

Así que trato y adjuntar Foo.mdf haciendo clic derecho sobre bases de datos y seleccionar Adjuntar .. y encontrar el MDF. Esto produce un error de vaga:

CREATE FILE encountered operating system error 32(error not found)  
while attempting to open or create the physical file
'C:\inetpub\wwwroot\FooApp\App_Data\Foo.mdf'. (Microsoft SQL Server, Error: 5123)

Si dejo mi sitio ASP.NET en IIS, a continuación, el pegado ¿Tiene trabajo, pero luego al reiniciar el ASP.NET aplicación, no puede conectarse a Foo.mdf.

Así que parece que SQL Express 2005 sólo se permitirá que sea mi aplicación o Management Studio Connect. Esto parece realmente basura - sin duda SQL Express debe permitir que más de una conexión? Yo estaba esperando que se comporte como regular de SQL Server.

Con suerte que estoy haciendo mal. Por favor avise.

¿Fue útil?

Solución

¿Se puede comprobar la cadena de conexión de aplicaciones y ver si tiene instancia de usuario = true

por ejemplo:

Data Source=.\SQLEXPRESS;Integrated Security=true; AttachDbFilename=|DataDirectory|\mydb.mdf;User Instance=true;

De MSDN : El otro principal problema con las instancias de usuario se produce porque SQL Server abre archivos de base de datos con acceso exclusivo. Esto es necesario porque SQL Server administra el bloqueo de los datos de base de datos en su memoria. Por lo tanto, si hay más de una instancia de SQL Server tiene el mismo archivo abierto, existe la posibilidad de corrupción de datos. Si dos instancias diferentes de usuarios utilizan el mismo archivo de base de datos, un caso debe cerrar el archivo antes de la otra instancia puede abrirlo.

Si ese es el problema, entonces se puede adjuntar la base de datos en SQL Server Management Studio y modificar las cadenas de conexión de la siguiente manera para que varios clientes se pueden conectar a la misma base de datos.

Server=.\SQLEXPRESS;Database=myDataBase;Trusted_Connection=True;

Si esto no es el tema en su caso, también echa un vistazo a la sección "Problemas comunes" en el enlace anterior. Podría estar relacionado con permisos como por puntos 1/2 en la sección "Problemas comunes"

Otros consejos

No tengo ninguna experiencia usando la base de datos por defecto de ASP.NET, pero ¿ha intentado mover el MDF a su carpeta de SQL Express DATOS? (Por defecto: C: \ Archivos de programa \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA) Una vez en la carpeta se puede utilizar el Management Studio para adjuntar el archivo a la instancia de SQL Express. Usted querrá modificar la cadena de conexión en el archivo web.config para tener este aspecto:

<connectionStrings>
    <add name="ApplicationServices"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=aspnetdb"
     providerName="System.Data.SqlClient" />
</connectionStrings>

Añadir la siguiente cuenta de usuario en la carpeta App_Data * * de su sitio web: SQLServerMSSQLUser $ . Búscalo en los permisos de seguridad avanzadas, por lo que usted hace una búsqueda en el acto da el control total de la misma.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top