web-dev-qa-db-ja.com

プリンシパルサーバーで正常に機能するミラーサーバー上の同じSQLログインのログインの問題

私たちはこれを理解しようとしている間、私は状況を説明するために最善を尽くします:

SQLログイン[LA]があり、SQLエラーログにプリンシパルサーバーでの正常な接続を示しています[さまざまなアプリからの接続]。このログインは、ミラーサーバーでの接続も成功したことを示しています。

これが、プリンシパルサーバーに正常に接続するが、ミラーサーバーに接続できない別のログイン[LB]です。 [上記のログインLA接続と同じアプリケーション]

トラブルシューティング完了:

  1. 両方のサーバーでsp_help_revloginを実行し、ログイン用のハッシュされたパスワード[LB]を照合しました。したがって、プリンシパルとミラーの両方のSQLログインに関して、このログインのパスワードが同じであることを確認します。

  2. ログインのSIDは両方のサーバーで同じであるため、これも問題にはなりません。

  3. アプリケーションは同じクレデンシャルを使用してプリンシパルに接続しますが、これは成功ですが、ミラーサーバーでログインが失敗したことを示しています。

ログインが失敗したため、ログインがロックされ続けます。

これをアプリケーションの問題としてアプリの所有者に渡す前に、DBAとして他に何を確認できますか?

この問題の根本的な原因を見つけるためのトラブルシューティングを支援してください、ありがとうございます。

3
Newbie-DBA

ログインがロックされている場合は、パスワードが正しくないことを示しています。サーバーのログインに対して誤ったパスワードが記録されているか、クライアントが間違ったパスワードを提示しています。

これはミラーリング環境なので、クライアントは両方のインスタンスで同じパスワードを使用しているに違いありません。ミラーへのログインのパスワードは、マスターへのログインのパスワードと同じではありません。

既知の適切なパスワード、つまりハッシュバージョンではないパスワードを使用して、ミラーサーバーにログインを再作成します。

プリンシパルサーバーに対して実行されたこのクエリから正しいsidを取得(コピーアンドペーストを使用)していることを確認します。

SELECT sp.name
    , sp.sid
FROM sys.server_principals sp
WHERE sp.name = 'login_name';

ミラーで実行するCREATE LOGINステートメントでそのsidを使用します。

CREATE LOGIN login_name
WITH PASSWORD = 'thepassword'
    , SID = 0x000000000000 --put the real sid here.
    , DEFAULT_DATABASE = tempdb;

ログインはデータベース内のユーザーにリンクされるため、sidは重要です。

1
Max Vernon