在调试在IIS Express下运行的ASP.Net MVC应用程序时,尝试使用成员资格提供程序时出现以下错误:
无法打开登录请求的数据库“MyDB”。登录失败。
用户'MY-PC \ MyName'登录失败。
我尝试使用
中列出的步骤进行问题排查https://stackoverflow.com/a/2577854/141172
SELECT SUSER_ID('MY-PC\MyName')
返回一个ID。
SELECT USER_ID('MY-PC\MyName')
返回NULL
CREATE USER [MY-PC\MyName] FROM LOGIN [MY-PC\MyName]
返回错误消息
登录已拥有不同用户名下的帐户。
实际上,有一个登录帐户,在我创建数据库时自动创建,名为
DBO
映射到MY-PC\MyName
。
我的连接字符串是
Data Source=.\SQLEXPRESS;Initial Catalog=MyDB;Persist Security Info=True;Integrated Security=SSPI;
在生产环境中运行我会知道如何创建适当的用户和登录。我坚持如何解决IIS Express使用我的Windows帐户名来尝试登录MyDB时该Windows帐户已与dbo
关联的事实。
答案 0 :(得分:13)
结果是连接字符串的初始目录部分中的拼写错误。
查看事件日志,我看到了一个错误,如
用户'MY-PC \ MyName'登录失败。原因:无法打开显式指定的数据库。 [客户:]
然后查看同一事件的详情标签,我看到二进制数据 In Bytes 包含的信息
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...
注意最后一部分是UTF-16编码单词“master”。这使我在轨道上建立了与主目录的连接,而不是所请求的目录,这反过来又导致注意到连接字符串中目录名称中的拼写错误。
如果微软只显示“没有这样的目录:MyCatalog”这样的错误,情况会好得多。