Domanda

So che questo è quasi un duplicato di: L'errore "Accesso non riuscito per l'utente 'NT AUTHORITY \ IUSR'" in ASP.NET e SQL Server 2008 e Accesso non riuscito per l'utente 'username' - System.Data.SqlClient.SqlException con LINQ in esterna progetto / libreria di classi ma alcune cose non si sommano rispetto ad altri appliations sul mio assistente e io non sono sicuro perché.

Scatole in uso:

Web Cassetti SQL Cassetti SQL Test Box

La mia applicazione:

Ho un'applicazione Web ASP.NET, che fa riferimento a una libreria di classi che utilizza LINQ to SQL. stringa di connessione impostato correttamente nella libreria di classi. Come da Accesso non riuscito per utente username ' '- System.Data.SqlClient.SqlException con LINQ nella biblioteca di progetto / classe esterna ho anche aggiunto questa stringa di connessione al Web Application.

La stringa di connessione utilizza le credenziali SQL come modo (sia web app e libreria di classi):

 <add name="Namespace.My.MySettings.ConnectionStringProduction"
        connectionString="Data Source=(SQL Test Box);Initial Catalog=(db name);Persist Security Info=True;User ID=ID;Password=Password"
        providerName="System.Data.SqlClient" />

Questa connessione confermato come lavorare con aggiungendolo a Esplora server. Questa è la stringa di connessione il mio file .dbml sta usando.

Il problema:

ottengo il seguente errore:

System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.

Ora riferimento a questo l'errore 'Accesso non riuscito per l'utente 'NT AUTHORITY \ IUSR'' in ASP.NET e SQL Server 2008 si dice che è davvero il servizio di rete locale e l'utilizzo di qualsiasi altro nome non di dominio non lo farà lavoro.

Ma io sono confuso perché ho controllato sia Box SQL e SQL test di sicurezza SQL Management Studio ed entrambi hanno NT AUTHORITY/NETWORK SERVICE in Protezione -> Account di accesso, a livello di database, che non è elencato in Protezione -> Users, ma a livello di database Sicurezza -.> utenti ho l'utente visualizzato nella stringa di connessione

A livello di NTFS sul server web, i permessi hanno SERVIZIO DI RETE ha il pieno controllo.

Il motivo per cui mi sono confuso è perché ho molte altre applicazioni web sul mio server web, che i database di riferimento sia su Box SQL e SQL Box di prova, e tutti funzionano. Ma non riesco a trovare una differenza tra loro e la mia applicazione corrente che non sto usando una libreria di classi. Sarà che importa? Verifica le autorizzazioni NTFS, configurazione di account di accesso di sicurezza a livello di server e database, stringa di connessione e metodo di collegamento (credenziali di SQL Server) e IIS pool di applicazioni e altre opzioni di cartella, sono tutti uguali.

Perché queste applicazioni funzionano senza aggiungere il nomecomputer $ per i permessi di una delle mie scatole di SQL? Ma questo è ciò che l'un collegamento mi dice di fare per risolvere questo problema.

È stato utile?

Soluzione

Servizio di rete e LocalSystem sarà autenticarsi sempre come account atto sui temi a livello locale (built-in \ servizio di rete e built-in \ system), ma sia autenticherà come account macchina in remoto.

Se si vede un fallimento come Login failed for user 'DOMAIN\MACHINENAME$' significa che un processo in esecuzione come Servizio di rete o come LocalSystem ha accesso a una risorsa remota, si è autenticato come l'account del computer ed è stata negata l'autorizzazione.

esempio tipico potrebbe essere un'applicazione ASP in esecuzione in un set piscina app per utilizzare NETWORK SERVICE credenziali e collegamento di una SQL Server remoto: il pool di applicazione autenticherà come computer eseguendo l'app pool, e è questo conto macchina che deve essere garantito l'accesso.

Quando l'accesso è negato a un account di computer, l'accesso deve essere concesso per l'account del computer. Se il server si rifiuta di accesso 'DOMINIO \ macchina $', allora è necessario concedere i diritti di accesso a 'DOMINIO \ MACHINE $' non NETWORK SERVICE. Concedere l'accesso al SERVIZIO DI RETE permetterebbe un locali processo in esecuzione come Servizio di rete per la connessione, non una remota, dal momento che quello remoto l'autenticazione come, avete indovinato, DOMINIO \ macchina $.

Se si prevede l'applicazione ASP per la connessione a SQL Server remoto come un account di accesso di SQL e si ottiene eccezioni circa DOMINIO \ macchina $ significa che utilizzare la protezione integrata nella stringa di connessione. Se questo è inaspettato, significa che avvitato le stringhe di connessione in uso.

Altri suggerimenti

Questo errore si verifica quando è stato configurato l'applicazione con IIS e IIS va a SQL Server e cerca di login con le credenziali che non dispongono di autorizzazioni appropriate. Questo errore può verificarsi anche quando la replica o il mirroring è impostato.  Andrò su una soluzione che funziona sempre ed è molto semplice. Vai a SQL Server >> Sicurezza >> account di accesso e fare clic destro su NT AUTHORITY \ SERVIZIO DI RETE e scegliere Proprietà

Nella schermata di recente apertura di Proprietà di accesso, vai alla scheda “Mapping utenti”. Poi, nella scheda “Mapping utenti”, selezionare il database desiderato - in particolare il database per il quale viene visualizzato questo messaggio di errore. Sullo schermo inferiore, controllare il db_owner ruolo. Fare clic su OK.

Nel mio caso ho avuto Identity="ApplicationPoolIdentity" per il mio IIS pool di applicazioni.

Dopo ho aggiunto all'utente IIS APPPOOL\ApplicationName a SQL Server funziona.

Un collega ha avuto lo stesso errore ed è stato a causa di un piccolo errore di configurazione in IIS.
Il torto del pool di applicazioni è stato assegnato per l'applicazione Web.

In realtà usiamo un pool di applicazioni su misura con una specifica identità per soddisfare le nostre esigenze.

Nel suo locale IIS Manager -> Siti -> Sito Web predefinito -> Il nostro Web App Nome -> Impostazioni di base ... Il pool di applicazioni è stato "DefaultAppPool" al posto del nostro costume Pool di applicazioni.

Impostazione del pool di applicazioni corretto risolto il problema.

Il trucco che ha funzionato per me è stato quello di rimuovere Integrated Security dalla mia stringa di connessione e aggiungere un User ID=userName; Password=password regolare la stringa di connessione nel App.config della tua potenza libruary non essere utilizzando la protezione integrata, ma quello creato in Web.config è!

ho aggiunto alla mia <identity impersonate="true" /> web.config e ha funzionato bene.

In pratica per risolvere questo abbiamo bisogno di avere un po 'di messa a punto come

  • Web App in esecuzione sotto ApplicationPoolIdentity
  • Web Application connessione ai database attraverso ADO.Net l'autenticazione di Windows nella stringa di connessione

La stringa di connessione utilizzata con l'autenticazione di Windows includono sia Trusted_Connection=Yesattribute o l'attributo Integrated Security=SSPI equivalente nel file di Web.config

La mia connessione al database è in modalità di autenticazione di Windows. Così ho deciso che semplicemente cambiando le piscine applicazione di identità da ApplicationPoolIdentity per il mio log dominio credenziali di DomainName \ MyloginId

Passo:

  1. Fare clic sul Piscine applicazione
  2. Seleziona nome dell'applicazione

  3. Vai a Impostazioni avanzate

  4. Espandi Modello di processo e fare clic su Identità . Clicca tre puntino sulla parte destra.
  5. Fare clic su Imposta ... e fornire il registro del dominio credenziali di accesso

Per me è stato risolto.

Nota: nella produzione o ambiente IT, si potrebbe avere account di servizio con lo stesso dominio a identità del pool di app. Se è così, il servizio utilizzare l'account di accesso al posto del tuo.

Per me il problema è stato risolto quando ho sostituito il default incorporato conto 'ApplicationPoolIdentity' con un account di rete che è stato consentito l'accesso al database.

impostazioni possono essere effettuate in Internet Information Server (IIS 7+)> Pool di applicazioni> Impostazioni Advanded> Modello di processo> Identità

Per me problema con il 'DOMINIO \ MACHINENAME $' fissata impostando DefaultApplicationPool Identity per NetworkService.

entrare descrizione dell'immagine qui

Ci era stato ricevere messaggi di errore simili durante l'elaborazione di un database di Analysis Services. Si è scoperto che il nome utente, che è stato utilizzato per eseguire l'istanza di Analysis Services, non era stato aggiunto alla account di accesso di sicurezza di SQL Server.

In SQL Server 2012, i servizi di SQL Server e Analysis sono configurati per l'esecuzione come utenti diversi per impostazione predefinita. Se siete andati con le impostazioni predefinite, assicurarsi sempre che l'utente AS ha accesso al vostro origine dati!

Controlla se hai

User Instance=true

nella stringa di connessione. Provare a rimuoverlo che risolverà il problema.

Inoltre ho avuto questo errore con uno SQL Server autenticato utente

Ho provato alcune delle correzioni, ma non ha funzionato.

La soluzione nel mio caso è stato quello di configurare il suo "Modalità di autenticazione del server" per consentire l'autenticazione di SQL Server, sotto Management Studio:. Proprietà / Sicurezza

L'unico punto che sembra che tutti abbiano trascurato è che si può decidere di sicurezza integrata = true. Si può avere il sito in esecuzione con un account piscina. Questo è tutto bene così ed è ancora possibile colpire il server SQL con le credenziali utente originale e non la piscina del. Si chiama la delega vincolata. Se si attiva e impostare uno SPN finestre si traducono le credenziali del pool con l'utente è sulle richieste che vanno al servizio finale (SQL è solo uno di questi servizi). Devi registrarti l'unico e solo server SQL che i servizi SQL richieste sul server web. L'impostazione di questo tutto in su è troppo per me per cercare di descrivere con precisione qui. Mi c'è voluto un bel po 'di lavoro attraverso anche io.

ho trascorso un paio d'ore cercando di risolvere il problema e alla fine ho ottenuto - Browser SQL Server è stato "fermato". La correzione è per cambiarlo in modalità "automatica":

  

Se è disabilitata, andare in Pannello di controllo-> Administrative   Strumenti-> Servizi, e il look per l'agente SQL Server. Pulsante destro del mouse, e   selezionare "Proprietà". Dal menu a discesa "Tipo di avvio", il cambiamento da   "Disabilitato" su "Automatico".

citazione da qui

Ho avuto lo stesso problema in precedenza, eliminando Persist Security Info=True da ConnectionString lavorato per me.

mi sono imbattuto in questo problema quando un client ribattezzato SQL Server. Il Reporting Service SQL è stato configurato per connettersi al vecchio nome del server, che avevano anche creato un alias per che reindirizzato al IP del nuovo nome del server.

Tutte le loro vecchie applicazioni IIS stavano lavorando, il reindirizzamento al nuovo nome del server tramite l'alias. Su un intuizione, ho controllato se erano in esecuzione SSRS. Tentativo di connessione al sito SSRS Fruttato l'errore:

"Il servizio non è available.Contact l'amministratore di sistema per risolvere il problema Gli amministratori di sistema:. Il server di report non può connettersi al proprio database Assicurarsi che il database sia in esecuzione e accessibile È inoltre possibile controllare il.. segnalare log di traccia del server per i dettagli ".

E 'stato in esecuzione sul server, ma non riuscendo a connettersi perché stava usando l'alias per il vecchio nome del server. Riconfigurazione SSRS per utilizzare il nuovo nome del server al posto del vecchio / alias riparato.

  1. Cambia l'App Identità pool di sistema locale
  2. SQL Mgmt> Protezione> Accessi
    1. Trova NT AUTHORITY \ SYSTEM doppio click
    2. Mapping utente> Controlla il tuo database e dargli un ruolo al di sotto.
    3. Ricorda inoltre di creare la base di dati degli utenti o gli account di accesso di sicurezza con una password corretta.

Ho ottenuto questo errore nel tentativo di testare una soluzione che utilizza il seguente

string cn = "Data Source=[servername];Integrated Security=true;Initial Catalog=[dbname];";

Il modo in cui ho risolto era:. Ho dovuto aprire Visual Studio ed eseguirlo con un altro account, perché l'account stavo usando per aprire non era il mio account Admin

Così, se il problema è simile al mio: pin VS alla barra delle applicazioni, quindi utilizzare il tasto Maiusc e fare clic destro per aprire il menu in modo da poter aprire VS come un altro utente. entrare descrizione dell'immagine qui

Apprezzare ci sono alcune risposte buone qui, ma come ho appena perso tempo a lavorare questo fuori, spero che questo può aiutare qualcuno.

Nel mio caso, tutto era stato funzionando benissimo, poi si fermò per nessun motivo apparente con l'errore indicato nella domanda.

IIS è stato eseguito come servizio di reti e di servizi di rete era stato istituito su SQL Server in precedenza (vedi altre risposte a questo post). ruoli server e le mappature utente sembravano corrette.

Il problema è stato; per motivi assolutamente alcuna apparente; Servizio di rete era passato a 'Nega' Login diritti nel database.

Per risolvere:

  1. Apri SSMS> Sicurezza> account di accesso.
  2. Fare clic destro 'NT AUTHORITY \ NETWORK SERVICE' e scegliere Proprietà.
  3. Vai alla scheda 'Stato' e insieme Permission to Connect To Database Engine A 'di Grant'.

Servizio di rete ammessi

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top