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上運行時無法找到網絡服務。