¿Por qué no puedo ver la base de datos de SQL Server creada por una aplicación web?


5

Tengo una aplicación web ASP.NET MVC implementada en IIS en una máquina con Windows Server 2012.Cuando se inicie la aplicación por primera vez, creará la base de datos y las tablas que necesita, si es necesario, a través de Entity Framework.Todo esto funciona bien, y ahora quiero hacer algo de administración a la base de datos a través de SQL Server Management Studio.Sin embargo, cuando abro esa herramienta solo veo las bases de datos del sistema.Si elimino "User Instance = true" de la cadena de conexión y dejo que la aplicación cree la base de datos nuevamente, puedo ver la base de datos.

¿Por qué no puedo ver la base de datos creada por la aplicación web cuando User Instance = true estaba en la cadena de conexión?Si estoy viendo la instancia del servidor a través de Management Studio con una cuenta que tiene todos los roles, esperaría que pudiera ver todas las bases de datos.

Algunos detalles que pueden ayudar:

La aplicación utiliza la siguiente cadena de conexión en Web.config:


En IIS, el grupo de aplicaciones está configurado para ejecutarse con la identidadLocalServicey elLoad User Profileel ajuste esTrue.En SQL Server Express, agregamos un inicio de sesión para elLocal Servicecuenta y le dio ladbcreatorpapel.Cuando se inició la aplicación, fue capaz de crear la base de datos y las tablas, y todo parece estar funcionando.

Luego me conecto al servidor con el escritorio remoto y abro SQL Server Management Studio.Para conectarse a la base de datos, entro.\SQLEXPRESScomo el nombre del servidor y autenticar conWindows Authentication.Entonces me conecto ySolo ver las bases de datos del sistema..He agregado todos los roles de base de datos posibles a mi inicio de sesión, y veo que tengo elVIEW ANY DATABASEPermiso en la pestaña vigente.

8

Por favor, deje de usar eluser instance=trueajuste.No solohas this feature been deprecated, pero lo que realmente está sucediendo aquí es que Management Studio está activando unadiferenteinstancia de usuario de SQL Server que la que usa su aplicación, por lo que no es sorprendente que no pueda ver lo mismo en ambos casos.

(Por lo general, el síntoma de esto es que alguien ejecuta una actualización desde su aplicación, luego verifica la tabla en Management Studio, pensando que hay un error pero sin darse cuenta de que la actualización afectó a una copia diferente de la base de datos).

Cree la base de datos en su instancia de SQL Server en ejecución (o adjúntela allí).Entonces conecte a ese servidor elmismocamino, sin elUser Instanceconfiguración, tanto de SSMS y su aplicación.Lots more information here.No cree la base de datos cada vez que se inicie la aplicación, eso simplemente suena terriblemente mal.

+1

Gracias por la info.Dejé de usar User Instance = true y me ayudaste a comprender mejor lo que estaba haciendo.La base de datos no se crea cada vez que se inicia la aplicación, solo ocurre cuando la aplicación se inicia y ve que la base de datos no existe (normalmente solo la primera vez que se inicia). 13 dic. 132013-12-13 17:19:49


-1

Si ha iniciado sesión en el servidor, puede ver cuántos servicios de SQL hay en las ventanas de servicios. Quizá haya más de una instancia.