0

我的 SQL Server express 2005 DB 有一个奇怪的问题。它在 2003 服务器上运行。使用 VS2005 我可以毫无问题地访问数据库。但是当我尝试运行应用程序时,我得到:

 Cannot open user default database. Login failed.  Login failed for user 'NT AUTHORITY\NETWORK SERVICE'......... .ldf may be incorrect.

我已确保 NETWORK SERVICE 具有对网站文件夹及其所有子文件夹的完全访问权限。

我注意到,当我查看 App_Data 的属性时,它的只读属性上有一个灰色勾号。.MDF 文件不是只读文件,但我无法删除此灰色勾号。我试过点击它直到它消失并应用更改,我试过 ATTRIB -r 但似乎没有任何改变。

我很迷茫。

乔恩

4

4 回答 4

1

您实际上是在使用 SQL Server Express 的实例,还是仅使用 App_Data 文件夹中的数据库文件?

如果您使用的是 SQL Server 实例并且您安装了SQL Server Management Studio Express,您将执行类似这样的操作来授予“网络服务”帐户访问数据库的权限(考虑一下,您应该可以指向 Management Studio在 App_Data 文件夹中的 mdf 中,做同样的事情):

  1. 打开 SQL Management Studio,连接到您的数据库并在对象资源管理器中打开它。
  2. 在服务器级别 (MachineName\SQL Express) 展开“安全”部分 - 检查用户尚未在下面的“登录”部分中。
  3. 如果没有,请右键单击“登录”,“新建登录...”
  4. 确保登录类型设置为“Windows 身份验证”,然后您可以:
    1. 点击“Search...”,然后点击“Advanced...”,然后点击“Find now”,双击“NT Service”,点击“Ok”下一个对话框。
    2. 只需在“登录名:”框中输入“NT Authority\Network Service”即可。
  5. 然后,在“用户映射”页面(从左侧窗格中选择)中,在您希望该用户访问的数据库旁边打勾。
  6. 如果您有数据库角色(例如,如果此数据库安装了默认的 ASP.NET 成员资格/角色/配置文件表等),请确保为用户提供正确的角色 - 例如“aspnet_Membership_BasicAccess”。

我希望这会有所帮助。

于 2009-01-25T11:49:32.787 回答
1

刚遇到这个问题。我们在 App_Data 文件夹中使用了一个数据库文件。

“看来我的数据库仍然在我的 IDE(Visual Web Developer Express)中打开,在数据库资源管理器中。右键单击数据库并选择“关闭连接”修复它。“

(感谢asp.net 论坛

于 2009-11-23T05:43:15.800 回答
0

区别与文件夹上的 ACL 无关,而是与安全上下文映射到数据库中的用户这一事实有关。您的数据库可能会为您的用户帐户映射到 dbo。

如果网络服务帐户要使用数据库,您需要在数据库中创建一个用户以映射到机器帐户。

于 2009-01-24T22:52:07.507 回答
0

我猜你正在运行一个非英语操作系统。

不知何故,无论出于何种原因,当操作系统被翻译成其他语言时,网络服务的登录名有时会被本地化。

现在很多程序都希望将登录名硬编码为“NT AUTHORITY\NETWORK SERVICE”——例如在德语版本的 Windows 中,帐户的名称是“NT-AUTORITÄT\NETZWERKDIENST”。所以你的程序正在寻找英文名称,找不到它,并显示错误。

甚至一些微软程序在安装时也会遇到这个陷阱并显示这样的错误!

于 2009-05-07T12:38:59.020 回答