web-dev-qa-db-ja.com

SQL Serverにログインできません+ SQL Server認証+エラー:18456

Localhost\sql2008サーバーにログインアカウントを作成しました(例:User123)

データベースにマッピング(デフォルト)

SQL Serverの認証モードが両方(WindowsとSQL)に設定されている

しかしSQL Serverへのログインは次のメッセージで失敗します(User123の場合)

注:UserName/Passwordが正しく入力されていることを複数回確認しています

エラーの詳細:

ユーザー 'User123'(Net.SqlClientデータプロバイダ)のログインに失敗しました

サーバー名:localhost\sql2008エラー番号:18456重大度:14状態:1行番号:65536

これで何か助けてください。

117
Sreedhar

デフォルトでは、ログインに失敗したというエラーメッセージは何もありませんが、ログイン認証情報が一致しないためにクライアントユーザー接続がサーバーによって拒否されました。最初に確認する作業は、そのユーザーがそのSQL Serverインスタンスおよび関連データベースに対しても適切な特権を持っているかどうかを確認することです。必要な権限が設定されていない場合は、そのユーザーログインに関連する権限を付与することでその問題を解決する必要があります。

そのユーザーがデータベースとサーバーに対する適切な権限を持っていても、そのログインに対して資格情報の問題が発生した場合、SQL Serverへの認証の許可が拒否され、クライアントに次のエラーメッセージが表示されます。

Msg 18456, Level 14, State 1, Server <ServerName>, Line 1
Login failed for user '<Name>'

さて、エラーメッセージを見て、これはLevel&stateを理解するのに説明的ではないように感じます。デフォルトでは、ログイン認証時の問題の性質にかかわらず、オペレーティングシステムエラーに「状態」が1と表示されます。そのため、さらに調査するには、関連するSQL Serverインスタンスのエラーログを調べて、このエラーの重大度と状態に関する詳細情報を入手する必要があります。ログ内の対応するエントリは、次のようになります。

2007-05-17 00:12:00.34 Logon     Error: 18456, Severity: 14, State: 8.
or

2007-05-17 00:12:00.34 Logon     Login failed for user '<user name>'.

上記で定義されているように、エラーの重大度と状態の列は、問題の原因を正確に反映するために重要です。上記の状態のエラー番号8は、パスワードの不一致による認証の失敗を示します。 Books Onlineが参照します。既定で、19未満の重要度のユーザー定義メッセージは、発生してもMicrosoft Windowsアプリケーションログに送信されません。したがって、重大度が19未満のユーザー定義メッセージは、SQL Serverエージェントの警告をトリガしません。

SQL Server Protocols(Dev.team)のプログラムマネージャであるSung Leeが、エラー状態の説明に関する詳細を概説しました。一般的なエラー状態とその説明を次の表に示します。

ERROR STATE       ERROR DESCRIPTION
------------------------------------------------------------------------------
2 and 5           Invalid userid
6                 Attempt to use a Windows login name with SQL Authentication
7                 Login disabled and password mismatch
8                 Password mismatch
9                 Invalid password
11 and 12         Valid login but server access failure
13                SQL Server service paused
18                Change password required


Well I'm not finished yet, what would you do in case of error:

2007-05-17 00:12:00.34 Logon     Login failed for user '<user name>'.

そのSQL Serverインスタンスのエラーログから、重大度や状態レベルが定義されていないことがわかります。そのため、次のトラブルシューティングオプションは、イベントビューアのセキュリティログを見ることです。

アイデア、興味深いイベントをイベントログで調べてください。

46
Joe Pitz

SQL Server認証を有効にする必要があります。

  1. オブジェクトエクスプローラで、サーバーを右クリックして[プロパティ]をクリックします。

DBMS Properties dialog

  1. [サーバーのプロパティ]ウィンドウで、左側のページの一覧にある[セキュリティ]をクリックします。 [サーバー認証]で[SQL ServerとWindows認証モード]ラジオオプションを選択します。

SQL Server Authentication dialog

  1. SQLEXPRESSサービスを再起動します。
323
PrateekSaluja

私はこれと同じ問題を抱えていましたが、私の考えでは、サーバー認証を "SQL ServerとWindows認証モード"に設定していませんでした。

これにアクセスすることができます

  • インスタンスを右クリックします(IE SQLServer2008)
  • 「プロパティ」を選択
  • 「セキュリティ」オプションを選択してください
  • 「サーバー認証」を「SQL ServerとWindowsの認証モード」に変更します。
  • SQLServerサービスを再起動します。
    • インスタンスを右クリック
    • 「再起動」をクリック
42
Nathan Koop

これにアクセスすることができます

Right click on instance (IE SQLServer2008)
Select "Properties"
Select "Security" option
Change "Server authentication" to "SQL Server and Windows Authentication mode"
Restart the SQLServer service
    Right click on instance
    Click "Restart"

これを読んでいる他の人のためだけに:これは私にとっても2012 SQL Serverでうまくいきました。ありがとう

18
Barry

この問題を解決するには、使用しているSQL Serverに対してSQLサーバー認証が有効になっていることを確認します。

0