web-dev-qa-db-de.com

System.Data.SqlClient.SqlException: Anmeldung für Benutzer fehlgeschlagen

Beim Debuggen meines Projekts habe ich keine Probleme. Beim Ausführen in IIS wird diese Fehlermeldung angezeigt:

System.Data.SqlClient.SqlException: Anmeldung für Benutzer "Domäne\Name-PC $" fehlgeschlagen.

Stapelverfolgung

[SqlException (0x80131904): Login failed for user 'CAPLUGSLLC\OETINGER-PC$'.]
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +6749670
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +815
   System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4515
   System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +84
   System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +53
   System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) +368
   System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) +6777754
   System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) +6778255
   System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) +878
   System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +1162
   System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +72
   System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +6781425
   System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +103
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +2105
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +116
   System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +1089
   System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +6785863
   System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +233
   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +278
   System.Data.SqlClient.SqlConnection.Open() +239
   System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user) +65
   System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe() +38
   System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode() +30
   System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +81
   System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +54
   System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +446
   System.Linq.Enumerable.ToList(IEnumerable`1 source) +80
   MvcMobile.Controllers.HomeController.Index() +38
   lambda_method(Closure , ControllerBase , Object[] ) +79
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +261
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39
   System.Web.Mvc.Async.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() +34
   System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +124
   System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +839035
   System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +15
   System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +33
   System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +839620
   System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +28
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +65
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +51
   System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +51
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288

Die wichtigste Lösung, die ich über Google finden kann, besteht darin, die erweiterten Identitätseinstellungen des Anwendungspools zu ändern, die nicht funktionierten.

Ich verwende IIS 7.5 und verbinde mich mit SQLServer 2012. Die Verbindungszeichenfolge befindet sich unten.

Verbindungszeichenfolge

<add name="Caplugs_Nav_DataConnectionString" connectionString="Data Source=01DEV\SQLDEV01;Initial Catalog=Caplugs_Nav_Data;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework"
  providerName="System.Data.SqlClient" />
23
joetinger

Wenn Sie beabsichtigen, die Windows-Authentifizierung zum Identitätswechsel des Dienstkontos zu verwenden, müssen Sie die Windows-Authentifizierung sowohl in IIS als auch in ASP.NET einrichten. 

Stellen Sie in IIS sicher, dass das Windows-Authentifizierungsmodul hinzugefügt und aktiviert ist. Stellen Sie außerdem sicher, dass Ihr Anwendungspool unter einem Domänenkonto und nicht unter einem lokalen Konto ausgeführt wird.

Stellen Sie in ASP.NET sicher, dass das Attribut für den Authentifizierungsmodus auf "Windows" gesetzt ist.

<system.web>
    <authentication mode="Windows"/>
 </system.web>
16
Cam Bruce

Setzen Sie einfach Integrated Security=False und es funktioniert entsprechend einem Kommentar Unterschied zwischen True und False ist:

True ignoriert User ID und Password, sofern angegeben und verwendet diejenigen des laufenden Prozesses. SSPI(Security Support Provider Interface ) verwendet sie, sofern angegeben, weshalb MS dies bevorzugt . Sie sind insofern gleichwertig, als dass sie zur Authentifizierung denselben Sicherheitsmechanismus verwenden, aber das ist es.

19
sepehr

Ich hatte eine ähnliche Erfahrung und es dauerte einige Zeit, um das Problem zu lösen. Mein eigener Fall war jedoch ASP.Net MVC Core und Core Rahmen. Die Einstellung von Trusted_Connection=False; hat mein Problem gelöst.

In appsettings.json-Datei

"ConnectionStrings": {
    "DefaultConnection": "Server=servername; Database=databasename; User Id=userid; Password=password; Trusted_Connection=False; MultipleActiveResultSets=true",
  },
3
Bioscom

Sie können diese Fehlermeldung auch erhalten, wenn Ihr SQL Server nicht für die Verwendung der Authentifizierung im gemischten Modus konfiguriert wurde. Dies bedeutet nicht, dass dies nicht aktiviert ist!

3
Calanus

Ich bin gerade auf diesen Fehler gestoßen und es dauerte Tage, bis er behoben war. Wir wurden von der in der ersten Frage erwähnten Red-Herings-Fehlermeldung zu einer Schleife geworfen, und das Fehlerprotokoll der Windows-Ereignisanzeige zeigte etwas Ähnliches an:

Login failed for user '(domain\name-PC)$'. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>]

Keines von diesen war wahr, der Benutzer hatte alle erforderlichen Berechtigungen in SQL Server. 

In unserem Fall bestand die Lösung darin, die Anwendungspoolidentität in IIS auf NetworkService zu ändern.

1
killa-byte

ein bisschen dumm, aber ich hatte einen seltsamen Charakter (é) in meinem Passwort. Nachdem ich es weggelassen habe, habe ich den Fehler nicht mehr erhalten.

1
iSpain17

add persist security info = True; in Verbindungszeichenfolge.

0
nayan

Ich sah mich der gleichen Situation gegenüber. Erstellen Sie Ihre Verbindungszeichenfolge wie folgt.

Ersetzen

"connectionString": "Data Source=server name;Initial Catalog=DB name;User id=user id;Password=password;Integrated Security=True;MultipleActiveResultSets=True"

durch

"connectionString": "Server=server name; Database=Treat; User Id=user id; Password=password; Trusted_Connection=False; MultipleActiveResultSets=true"
0

Nummer hier verwendet SQL-Authentifizierung

 enter image description here

anstelle von Windows (richtig)

 enter image description here

wenn Sie das Login zu SQL Server hinzufügen, erhalten Sie auch diesen Fehler, wenn Sie Windows auth verwenden.

0
Dunc