10

在调试在 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]

返回错误信息

该登录名已经有一个使用不同用户名的帐户。

确实有一个登录账号,是我创建数据库的时候自动创建的,叫

德博

映射到MY-PC\MyName.

我的连接字符串是

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

在生产环境中运行我会知道如何创建适当的用户和登录。当该 Windows 帐户已与dbo.

4

1 回答 1

13

原来是连接字符串的初始目录部分中的拼写错误。

查看事件日志,我看到了类似的错误

用户 'MY-PC\MyName' 登录失败。原因:无法打开明确指定的数据库。[客户: ]

然后查看同一事件的详细信息选项卡,我看到包含的二进制数据 字节信息

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...

请注意最后一部分是如何对单词“master”进行 UTF-16 编码的。这让我知道连接是连接到目录而不是请求的目录,这反过来导致注意到连接字符串中目录名称的拼写错误。

如果微软只显示“没有这样的目录:MyCatalog”之类的错误,那就更好了。

于 2012-07-24T15:41:14.597 回答