2012-07-24 67 views
8

在调试下,IIS快速运行的ASP.Net MVC应用程序,我得到尝试使用成员资格提供程序时出现以下错误:SQL服务器:可以通过登录无法打开数据库请求

无法打开数据库“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; 

在生产环境中我会知道如何创建相应的用户和登录运行。当我的Windows帐户已经与dbo关联时,我遇到了如何解决IIS Express使用我的Windows帐户名尝试登录MyDB的事实。

+0

它看起来很奇怪。你必须连接。也许你尝试连接到另一台服务器?你检查过服务器日志吗? http://blogs.msdn.com/b/sql_protocols/archive/2006/02/21/536201.aspx – 2012-07-24 05:43:23

+0

感谢。检查日志实际上导致我以一种全面的方式发现错误。增加了解决方案。 – 2012-07-24 15:42:40

回答

12

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

寻找在事件日志中,我看到了如下的错误

用户登录失败 '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... 

注意怎样的,最后部分是UTF-16编码单词“主”。这让我的目标是连接到主目录而不是请求的目录,这反过来导致在连接字符串中的目录名称中发现错字。

这本来是这么多更好,如果微软将不得不只显示像“没有这样的目录:MyCatalog”错误。

+3

+1用于发布其他人的解决方案。 – 2012-07-25 00:08:49

+0

HOLY $ HIT多么糟糕的错误信息!这实际上也是一个拼写错误的数据库名称。我结束了我消除了登录,其中被锁定我出去的SQL Server,我不能恢复它,因为我的管理员组成员用户帐户,显然是不够的管理员和-m/-f技巧不工作要么。所以我重新安装了我的sql实例三次! – 2013-07-24 20:47:56

相关问题