Accesso non riuscito per l’utente ‘NT AUTHORITY \ NETWORK SERVICE’

Mi sono preso cura di questo per 2 giorni senza avvicinarmi alla soluzione. Ho letto 20-30 thread in più e non riesco a risolvere questo problema.

Per favore aiutatemi.

Ho disabilitato l’autenticazione anonima, abilitare la rappresentazione di asp.net.

Ho aggiunto

Ho aggiunto l’utente agli accessi di sicurezza che sono connessi al database su cui cerco di connettermi

Questa è la connessione che utilizzo:

 Data Source=IPTOSERVER;Initial Catalog=Phaeton;User Id=User;Password=Password; 

messaggio di errore:

Imansible aprire il database “Phaeton.mdf” richiesto dal login. L’accesso non è riuscito.

Accesso non riuscito per l’utente ‘NT AUTHORITY \ NETWORK SERVICE’.

Il messaggio di errore che stai ricevendo ti dice che l’applicazione non è riuscita a connettersi al db sqlexpress e non al server sql. Cambierò semplicemente il nome del db nel server sql, quindi aggiornerò di conseguenza la connessione e proveremo di nuovo.

Il tuo messaggio di errore afferma quanto segue:

 Cannot open database "Phaeton.mdf" requested by the login. The login failed. 

Sembra che tu stia ancora cercando di connettersi al database basato su file, il nome “Phaeton.mdf” non corrisponde al tuo nuovo nome di database sql “Phaeton”.

Spero che questo ti aiuti.

Stavo vivendo un messaggio di errore simile che ho notato nel Visualizzatore eventi di Windows che diceva:

Accesso non riuscito per l’utente ‘NT AUTHORITY \ NETWORK SERVICE’. Motivo: imansible aprire il database specificato esplicitamente. [CLIENTE: macchina locale]

La soluzione che ha risolto il mio problema era:

  1. Accedi a SqlExpress tramite SQL Server Management Studio
  2. Vai alla directory “Sicurezza” del database
  3. Fare clic con il tasto destro del mouse sulla directory Users
  4. Seleziona “Nuovo utente …”
  5. Aggiungi ‘NT AUTHORITY \ NETWORK SERVICE’ come nuovo utente
  6. Nell’area Appartenenza ruolo dati, selezionare db_owner
  7. Clicca OK

Ecco uno screenshot di quanto sopra: Screenshot dell'aggiunta di un nuovo servizio di rete utente come db_owner a SqlExpress

Se il messaggio di errore è giusto

“Accesso non riuscito per l’utente” NT AUTHORITY \ NETWORK SERVICE “.”, Quindi concedere l’authorization di accesso per “NT AUTHORITY \ NETWORK SERVICE”

usando

 "sp_grantlogin 'NT AUTHORITY\NETWORK SERVICE'" 

altrimenti se il messaggio di errore è come

“Imansible aprire il database” Phaeton.mdf “richiesto dal login L’accesso non è riuscito Accesso non riuscito per l’utente ‘NT AUTHORITY \ NETWORK SERVICE’.”

prova ad usare

 "EXEC sp_grantdbaccess 'NT AUTHORITY\NETWORK SERVICE'" 

sotto il tuo database “Phaeton”.

Mi è piaciuta la soluzione di Jed, ma il problema era che ogni volta che creavo il mio progetto in modalità di debug, distribuivo il mio progetto di database e rimuovevo di nuovo l’utente. quindi ho aggiunto questo script MySQL allo script Post-Deployment. fa praticamente quello che ha detto Jed ma crea l’utente ogni volta che lo schiero.

 CREATE USER [NT AUTHORITY\NETWORK SERVICE] FOR LOGIN [NT AUTHORITY\NETWORK SERVICE] WITH DEFAULT_SCHEMA = dbo; Go EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\NETWORK SERVICE' 

Hai detto che funzionava bene quando stavi usando l’edizione SQL Express. Per impostazione predefinita, le edizioni Express creano un’istanza denominata ed eseguono in NT Authority \ Network Service.

SQL Server STD per impostazione predefinita installa un’istanza predefinita ed esegue NT Authority \ SYSTEM.

Avete sia l’edizione SQL completa che la versione Express installate sulla stessa macchina?

  1. Potrebbe essere che da qualche parte la stringa di connessione rimandi ancora all’istanza denominata ‘SQLEXPRESS’ piuttosto che all’istanza predefinita creata dalla versione completa.

  2. Inoltre, dove è definita la stringa di connessione? In IIS o nel tuo codice? Assicurarsi che, se definiti in molti punti, puntino tutti alla stessa istanza e database SQL.

  3. Prova anche a guardare l’errore dettagliato presente nei log degli errori di SQL Server. L’errore registrato nel registro eventi non è completo per motivi di sicurezza. Questo ti aiuterà anche a sapere se la connessione è stata effettuata sul server SQL corretto.

  4. Assicurarsi inoltre che la macchina su cui è installato SQL sia accessibile e che IIS stia tentando di accedere alla stessa macchina. Nella mia azienda a volte a causa di una risoluzione dei nomi errata, la query non riesce poiché la maggior parte dei nostri computer ha installato SQL e la query finisce nel server SQL sbagliato.

  5. Assicurarsi che il database esista in SQL Server. Il nome visualizzato nei database in SQL Management Studio deve corrispondere a quello nella stringa di connessione.

L’accesso a SQL Server richiesto è DOMAIN\machinename$ . Questo è il modo in cui la chiamata NT AUTHORITY\NETWORK SERVICE viene visualizzata su SQL Server (e file server, ecc.)

In SQL,

 CREATE LOGIN [XYZ\Gandalf$] FROM WINDOWS 

Il modo migliore è creare un utente per l’applicazione e assegnare le autorizzazioni adatte all’utente. Non utilizzare ‘NT AUTHORITY \ NETWORK SERVICE’ come utente ha la sua vulnerabilità ed è un utente che ha le autorizzazioni per molte cose a livello di sistema operativo. Stai lontano da questo utente incorporato.

Sto usando Entity Framework per rippolare il mio database e gli utenti vengono sovrascritti ogni volta che creo il mio database.

Ora eseguo questo ogni volta che carico un nuovo DBContext:

 cnt.Database.ExecuteSqlCommand("EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\\NETWORK SERVICE'");