4

我最近有some problems,我认为可能通过调试我的ASP.NET MVC应用程序IIS而不是默认的ASP.NET开发服务器来帮助。但是,当我尝试这样做时,应用程序无法访问数据库服务器(MS SQL Server 2008 Express) - 但它在开发服务器上工作良好。添加用户到SQL Server 2008 - 权限被拒绝

我得到的错误是

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

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

我尝试将用户NETWORK SERVICE添加到数据库中,但事实证明我没有用户权限来执行此操作 - 无论如何,我登录到服务器的Windows帐户都是admin,或者我在管理员上下文中运行该程序。我只是不能将其他用户添加到数据库。

我该如何解决这个问题?

回答

3

您可以更改IIS运行于其下的用户:这是您的Web站点正在运行的ApplicationPool的属性设置。

我们做这一切的时候,因为它为我们提供了对用户访问进行更好的控制 - 即新台币实例/ NETWORK SERVICE帐户有点太魔术我喜欢...

1

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

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

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

+0

这就是问题 - 我不允许授予任何用户帐户的访问权限。 teedyay的建议(更改IIS中应用程序池中的默认用户)确实解决了这个问题。我应该知道的解决方法是否存在明显的缺陷? – 2009-02-11 08:05:55

+0

不,只要您正确管理帐户,这是一个很好的解决方案。太糟糕了,如果你没有访问权限,你就没有可以为你设置的DBA! – 2009-02-11 12:20:27

0

你运行一个非英语作业系统?

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