2013-05-07 14 views
20

io avere il seguente messaggio di errore:Accesso non riuscito per l'utente 'IIS AppPool MyAppPool

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

Come può correggere questo? Sto usando Windows 7 Enterprise Edition e SQL server 2012.

+0

L'utente ha accesso al server sql? –

+0

Puoi pubblicare la stringa di connessione DB? – JackLock

risposta

21

Se non si cambia, ogni pool applicazione ha una propria identità. Nel tuo caso, aggiungi un nuovo utente al tuo database SmallBakery con il nome IIS APPPOOL\MyAppPool utilizzando SQL Management Studio. Trovate l'elenco degli utenti nel sottonodo "Sicurezza/Utenti" del vostro database. Questo dovrebbe essere qualcosa di simile:

enter image description here

Per il test, lasciare che l'utente sia membro del ruolo db_owner. Se funziona, rimuovi questo ruolo e lascia che sia membro di db_datareader e db_datawriter.

In questo modo, ogni pool app (forse ogni sito web, se tutti usano la propria piscina app) ha accesso solo alla banca dati corrispondente.

+1

Grazie !! è stato molto utile !! – Freddy

+1

ha funzionato per me! Grazie. – RobHurd

+2

L'intuizione aggiuntiva nella seguente risposta mi ha aiutato a risolvere lo stesso errore: http: // StackOverflow.com/a/1973895/704808 – weir

1

dipende da come si desidera autenticare nella vostra app. Stai cercando di utilizzare la rappresentazione nella tua app?

Quello che sta succedendo in questo momento è l'identità della vostra piscina app in IIS è sempre passata quando si tenta di accedere al database. È possibile modificare l'identità del pool di applicazioni in modo che abbia accesso al database o modificare la stringa di connessione per utilizzare un accesso specifico anziché la sicurezza integrata.

+0

Sto utilizzando la seguente stringa di connessione: connectionString = "Data Source = HAIDRWHP5005160 \ SQLEXPRESS; Initial Catalog = SmallBakery; Integrated Security = True" In IIS pool di applicazioni che ho: identità formata: ApplicationPoolIdentity – Freddy

+0

destro. Quindi, come ho detto, sarà necessario modificare l'identità del pool di applicazioni in qualcosa che ha accesso al database o modificare la stringa di connessione. – squillman

+1

... o aggiungere l'identità del pool di app come utente al database. –

0

check out questo post. Il tuo problema sembra simile a quello che stavo incontrando, con lo stesso esatto messaggio di errore.

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

+0

stavo vedendo qualcosa di simile in http://stackoverflow.com/questions/7698286/login-failed-for-user-iis-apppool-asp-net-v4-0 – Freddy

+0

@Freddy, come il commento alla risposta che' Riferendosi a dice: "Se sei preoccupato per la sicurezza, non farlo". –

0

Come altri detto finora è necessario prendere la vostra applicazione utente del sistema piscina (IIS AppPool \ MyAppPool) e aggiungerlo come utente del database per il database con le autorizzazioni appropriate.

Si noti che questo funzionerà solo su IIS/Server ma se si pianifica la migrazione dell'applicazione su un server IIS/Sql diverso, sarà necessario apportare modifiche a SQL Server e IIS. Ti suggerirei di prendere in considerazione anche l'autenticazione SQL Server - potrebbe essere più conveniente per il tuo caso specifico.

Problemi correlati