2012-07-24 26 views
8

Mientras se depura una aplicación ASP.Net MVC se ejecuta en IIS Express, me sale el siguiente error al intentar utilizar el proveedor de pertenencia:SQL Server: Puede base de datos no está abierto solicitada por el inicio

No se puede abrir base de datos "MyDB "solicitado por el inicio de sesión. El inicio de sesión falló.

Error de inicio de sesión para el usuario 'MY-PC \ MyName'.

que intentaron solucionar problemas mediante los pasos descritos en

https://stackoverflow.com/a/2577854/141172

SELECT SUSER_ID('MY-PC\MyName') 

devuelve un ID.

SELECT USER_ID('MY-PC\MyName') 

devuelve NULL

CREATE USER [MY-PC\MyName] FROM LOGIN [MY-PC\MyName] 

devuelve el mensaje de error

El inicio de sesión ya tiene una cuenta con un nombre de usuario diferente.

De hecho, hay una cuenta de inicio de sesión, crea automáticamente cuando creé la base de datos, llamada

DBO

que mapea a MY-PC\MyName.

Mi cadena de conexión es

Data Source=.\SQLEXPRESS;Initial Catalog=MyDB;Persist Security Info=True;Integrated Security=SSPI; 

ejecuta en un entorno de producción me gustaría saber cómo crear usuarios y los inicios de sesión correspondientes. Estoy atascado en cómo resolver el hecho de que IIS Express está usando mi nombre de cuenta de Windows para tratar de iniciar sesión en MyDB cuando esa cuenta de Windows ya está asociada con dbo.

+0

Parece extraño. Tuviste que conectarte. ¿Tal vez intentas conectarte a otro servidor? ¿Has revisado los registros del servidor? http://blogs.msdn.com/b/sql_protocols/archive/2006/02/21/536201.aspx –

+0

Gracias. Verificando los registros en realidad me llevan de una forma redonda para descubrir el error. Agregó la solución. –

Respuesta

12

Resultó ser un error tipográfico en la porción de catálogo inicial de la cadena de conexión.

Mirando en el registro de eventos, vi un error como

Error de usuario 'MI-PC \ MiNombre'. Motivo: no se pudo abrir la base de datos explícitamente especificada. [CLIENTE:]

Luego, mirando en la ficha detalles del mismo evento, vi que el datos binariosEn Bytes información contenida

0000: 18 48 00 00 0E 00 00 00 .H...... 
0008: 17 00 00 00 45 00 52 00 ....E.R. 
0010: 49 00 43 00 2D 00 4F 00 I.C.-.O. 
0018: 52 00 49 00 47 00 49 00 R.I.G.I. 
0020: 4E 00 5C 00 53 00 51 00 N.\.S.Q. 
0028: 4C 00 45 00 58 00 50 00 L.E.X.P. 
0030: 52 00 45 00 53 00 53 00 R.E.S.S. 
0038: 00 00 07 00 00 00 6D 00 ......m. 
0040: 61 00 73 00 74 00 65 00 a.s.t.e. 
0048: 72 00 00 00    r... 

Note como la última parte de que es UTF-16 codificó la palabra "maestro". Eso me puso en la pista de que la conexión se está realizando en el catálogo maestro en lugar del solicitado, que a su vez lleva a notar el error tipográfico en el nombre del catálogo en la cadena de conexión.

Habría sido mucho mejor si Microsoft hubiera mostrado un error como "No such catalog: MyCatalog".

+3

+1 para publicar la solución para los demás. –

+0

HOLY $ HIT ¡Qué mensaje de error! De hecho, fue un nombre de base de datos mal escrito para mí también. Terminé eliminando mi inicio de sesión que me bloqueó de SQL Server y no pude recuperarlo ya que mi cuenta de usuario miembro del grupo administrador aparentemente no es suficiente de un administrador y los trucos -m/-f tampoco funcionaban. ¡Así que reinstalé mi instancia sql tres veces! –

Cuestiones relacionadas