web-dev-qa-db-ja.com

System.Data.SqlClient.SqlException:ユーザーのログインに失敗しました

デバッグでプロジェクトを操作しても問題はありません。しかし、IISで実行すると、このエラーが発生します。

System.Data.SqlClient.SqlException:ユーザー 'domain\name-PC $'のログインに失敗しました。

スタックトレース

[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

Googleで見つけられる一番の解決策は、機能しなかったアプリケーションプールの高度なID設定を変更することです。

IIS 7.5を使用しており、SQLServer 2012に接続している接続文字列は次のとおりです。

接続文字列

<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" />
26
joetinger

Windows認証を使用してサービスアカウントを偽装する場合、IISとASP.NETの両方でWindows認証を設定する必要があります。

IISで、Windows認証モジュールが追加され、有効になっていることを確認してください。また、アプリケーションプールがローカルアカウントではなくドメインアカウントで実行されていることを確認してください。

ASP.NETでは、認証モード属性が「Windows」に設定されていることを確認してください

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

Integrated Security=Falseを設定するだけで、TrueFalsecomment の違いに従って動作します:

Trueは、User IDPasswordを無視し、実行中のプロセスのものを使用します。SSPI(Security Support Provider Interface )は、提供されている場合はそれらを使用します。これらは、認証に同じセキュリティメカニズムを使用するという点で同等ですが、それは違います。

21
sepehr

SQL Serverが混合モード認証を使用するように構成されていない場合にも、このエラーが発生する可能性があります。実際には、これが有効になっていないことはわかりません。

4
Calanus

同様の経験があり、問題を解決するのに時間がかかりました。しかし、私自身の場合はASP.Net MVC CoreおよびCoreフレームワーク。設定Trusted_Connection=False;は私の問題を解決しました。

内部appsettings.jsonファイル

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

永続的なセキュリティ情報を追加= True;接続文字列内。

2
nayan

私はこのエラーに遭遇しましたが、解決するのに何日もかかりました。最初の質問で言及された赤いヘリングエラーメッセージに加えて、Windowsイベントビューアーのエラーログに類似した内容が示されたため、ループが発生しました。

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

これらのどちらも当てはまらず、ユーザーはSQL Serverで必要なすべてのアクセス許可を持っていました。

この場合の解決策は、アプリケーションプールIDをIISからNetworkServiceに切り替えることでした。

1
killa-byte

ちょっと愚かですが、パスワードに奇妙な文字(é)が含まれていました。省略した後、エラーは発生しなくなりました。

1
iSpain17

私は同じ状況に直面しました。次のように接続文字列を作成します。

交換

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

沿って

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

ここでNumptyはSQL認証を使用しました

enter image description here

windowsの代わりに(正しい)

enter image description here

ログインをSQL Serverに追加すると、Windows認証を使用している場合にもこのエラーが発生します。

0
Dunc