2013-05-07 107 views
20

我有以下錯誤信息:用戶登錄失敗「IIS APPPOOL myAppPool

Cannot open database "SmallBakery" requested by the login. The login failed. Login failed for user 'IIS APPPOOL\MyAppPool'

如何糾正呢?我正在使用Windows 7企業版和Sql server 2012.

+0

讓用戶訪問sql服務器? – 2013-05-07 19:54:56

+0

你可以發佈你的數據庫連接字符串嗎? – JackLock 2013-05-07 20:08:51

回答

21

如果你不改變,每個應用程序池都有它自己的身份。就你而言,只需使用SQL Management Studio將名爲IIS APPPOOL\MyAppPool的新用戶添加到數據庫SmallBakery即可。您可以在數據庫的「安全/用戶」子節點中找到用戶列表。這應該是這個樣子的是:

enter image description here

爲了進行測試,讓用戶成爲db_owner角色的成員。如果可行,請刪除此角色,並讓其成爲db_datareaderdb_datawriter的成員。

這樣,每個應用程序池(也許每個網站,如果他們都使用自己的應用程序池)只能訪問相應的數據庫。

+1

謝謝!這是非常有益的! – Freddy 2013-05-07 20:34:16

+1

爲我工作!謝謝。 – RobHurd 2014-04-16 23:08:10

+2

以下答案中的其他見解幫助我解決了相同的錯誤:http:// stackoverflow。com/a/1973895/704808 – weir 2014-11-14 21:18:05

1

這取決於您想如何在您的應用程序中進行身份驗證。你想在你的應用中使用模擬嗎?

現在發生的事情是,當您嘗試訪問數據庫時,您的應用程序池在IIS中的身份正在通過。您可以將應用程序池的身份更改爲可以訪問數據庫的內容,或者可以更改連接字符串以使用特定的登錄名,而不是集成的安全性。

+0

我使用下面的連接字符串: 的connectionString = 「數據源= HAIDRWHP5005160 \ SQLEXPRESS;初始目錄= SmallBakery;集成安全性=真」 在IIS應用程序池,我有: Idendity:ApplicationPoolIdentity – Freddy 2013-05-07 20:11:28

+0

權。就像我說過的,你需要將應用程序池的標識更改爲可訪問數據庫或更改連接字符串的內容。 – squillman 2013-05-07 20:24:23

+1

...或將應用池標識作爲用戶添加到數據庫。 – 2013-05-07 20:26:17

0

查看此文章。您的問題聽起來與我遇到的問題類似,具有相同的確切錯誤消息。

http://blogs.msdn.com/b/sqlexpress/archive/2011/12/09/using-localdb-with-full-iis-part-2-instance-ownership.aspx

+0

我在看到類似的東西在http://stackoverflow.com/questions/7698286/login-failed-for-user-iis-apppool-asp-net-v4-0 – Freddy 2013-05-07 20:37:17

+0

@Freddy,作爲對答案的評論,再提及說:「如果你擔心安全問題,不要這樣做」。 – 2013-05-07 20:46:29

0

與其他人一樣,至今爲止,您需要將您的應用程序池系統用戶(IIS AppPool \ myapppool)添加爲具有相應權限的數據庫用戶。

請注意,這隻能在您的IIS /服務器上找到,但如果您計劃將應用程序遷移到其他IIS/Sql服務器,則需要在SQL Server和IIS中進行更改。我建議你也考慮sql服務器認證 - 它可能會更方便您的具體情況。