2014-07-18 12 views
23

Ho creato un pool di applicazioni denominato "schoolPool" e l'ho assegnato alla mia applicazione web. L'identità per questo pool è stata impostata su LocalSystem. Quando provo ad accedere al mio database dall'interno dell'applicazione, cioè aprire una connessione SQL, ottengo il seguente errore per tutto il tempo:
Errore di accesso al server SQL: accesso non riuscito per l'utente 'NT AUTHORITY SYSTEM'

Login failed for user 'NT AUTHORITY\SYSTEM' 


Ho provato ad aggiungere NT AUTHORITY/SYSTEM per SSMS (SQL Server Management Studio) i login, ma era già un principio, che mostra il seguente errore:
enter image description here

risposta

38

ho ottimizzato le impostazioni delle applicazioni molto, cambiando l'identità del pool di applicazioni (in IIS di Windows 8.1 di) a LocalSystem, LocalService, NetworkService e Appli cationPoolIdentity. Tuttavia, tutti loro non sono riusciti a risolvere il problema che ho avuto l'accesso al mio database.
Infine Ho impostato l'identità del pool su LocalSystem e ho pensato perché potrebbe impedire a "NT AUTHRITY \ SYSTEM" di aprire una connessione al mio database. Ho aperto SQL Server Management Studio come utente "Amministratore" e ho verificato i ruoli del server per NT AUTHORITY \ SYSTEM nella sezione "accessi". Il ruolo predefinito del server per questo utente era pubblico per impostazione predefinita. Ho controllato anche sysadmin e ho aggiornato il mio modulo di richiesta web. Questa volta è stato un successo. Ottimo lavoro!

71

Autorizza NT AUTHORITY/SYSTEM al ruolo del server come amministratore di sistema. enter image description here

enter image description here

+0

sono stato come 2 giorni cercando di risolvere questo problema. Mi sento in debito con la mia vita karique

+0

Grazie Man, ti devo grande tempo :) –

+0

Cosa succede se NT AUTHORITY \ SYSTEM non esiste? L'ho creato manualmente ma ottengo lo stesso errore. –

2

risposta di Musakkhir di concedere sysadmin sembra mal pensata per quanto riguarda la sicurezza va, e la risposta di Pinal coinvolto dare i diritti di processo db_owner sconosciuti, ancora quasi certamente eccessivo. L'ho "risolto" io stesso semplicemente concedendo i diritti "pubblici", che normalmente consentono solo CONNECT, ma nient'altro, anche SELECT. Se si elimina l'errore di accesso e si interrompe l'inondazione del log degli errori, dal momento che ora effettua l'accesso, ma qualsiasi processo sconosciuto sta facendo il collegamento non può ancora fare nulla.

2

Rerun seguente query che assegnerà 'NT SERVICE \ MSSQLSERVER' per sysadmin

EXEC master..sp_addsrvrolemember @loginame = N'NT SERVICE\MSSQLSERVER', @rolename = N'sysadmin' 
+0

Non abbastanza ..... – VSG24

+0

grazie, EXEC master..sp_addsrvrolemember "@loginame" = N'NT AUTHORITY/SYSTEM ', "@rolename" = N'sysadmin' –