【问题标题】:Add user to SQL Server 2008 - permission denied将用户添加到 SQL Server 2008 - 权限被拒绝
【发布时间】:2009-02-10 23:28:47
【问题描述】:

我最近有some problems,我认为在IIS 中调试我的ASP.NET MVC 应用程序而不是使用默认的ASP.NET 开发服务器可能会有所帮助。但是,当我尝试此操作时,应用程序无法访问数据库服务器(MS SQL Server 2008 Express)——但它在开发服务器上运行良好。

我得到的错误是

Cannot open database 'myDbName' requested by the login. The login failed. Login failed for user 'NT INSTANCE/NETWORK SERVICE'.

我认为它以前工作过,因为开发服务器通过我的用户帐户访问数据库,而不是通过像 IIS 这样的网络服务。

我尝试将用户 NETWORK SERVICE 添加到数据库中,但事实证明我没有这样做的用户权限 - 我登录到服务器的 Windows 帐户是 admin 并不重要,或者我在管理员上下文中运行程序。我只是无法将其他用户添加到数据库中。

我该如何解决这个问题?

【问题讨论】:

    标签: iis login windows-authentication sql-server-2008-express


    【解决方案1】:

    您可以更改运行 IIS 的用户:这是运行您的网站的 ApplicationPool 属性中的设置。

    我们一直这样做是因为它可以让我们更好地控制用户访问 - NT INSTANCE/NETWORK SERVICE 帐户对我来说有点太神奇了...

    【讨论】:

      【解决方案2】:

      NETWORK SERVICE 是一个特殊帐户。如果您的数据库服务器位于 IIS 服务器的另一台计算机上,则需要添加帐户:

      \$ 作为数据库的用户。因此,如果您在 SPRINGFIELD 网络上名为 LISA 的 IIS 服务器上,则需要授予对 SPRINGFIELD\LISA$ 数据库的访问权限。请注意美元符号,它表示您的用户是机器帐户,而不是真实的人。

      如果您的数据库服务器和 IIS 服务器是同一台服务器,请授予对“NT AUTHORITY\NETWORK SERVICE”帐户的访问权限。这是帐户的全名。这应该可行。

      【讨论】:

      • 这就是问题所在 - 我不允许授予对任何用户帐户的访问权限。 teedyay 的建议(更改 IIS 应用程序池中的默认用户)确实解决了问题。我应该注意这种解决方法有什么明显的缺点吗?
      • 不,只要您妥善管理帐户,这是一个很好的解决方案。太糟糕了,如果您没有访问权限,您没有可以为您设置的 DBA!
      • 问题是,这是我用于爱好开发的私人笔记本电脑。我是唯一一个访问该站点的人,它只能在本地访问 - 我只是希望它能够在它真正应该能够运行的环境中测试这些东西。
      【解决方案3】:

      您运行的是非英语操作系统吗?

      由于某些原因,“NT Authority\Network Service”的帐户名称已本地化为其他语言。
      可悲的是,很多程序的帐号名硬编码为英文名,在国外版本的 Windows 上运行时找不到网络服务。

      【讨论】:

      • 我实际上是在瑞典版的 Windows Vista 上运行,但我确实考虑到了这一点。我翻译了错误消息,以便你们能够阅读它......;)
      • 我不是在谈论错误消息:MS 的某个人决定翻译帐户登录名 - 问题是,某些软件对英文帐户名进行了硬编码,并且不适用于本地化版本的窗户。请记住,他们不仅翻译了显示名称,还翻译了登录名,软件使用这些登录名来识别这些帐户。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 2019-03-08
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多