SQL Server: パスワード変更時に「パスワードは最近変更したばかりです。」というエラーがでる挙動を調べてみた


背景

自分のパスワードは、以下のクエリで変更することが可能です。

ALTER LOGIN [ログイン名] WITH PASSWORD = '新しいパスワードをここに' OLD_PASSWORD = '今のパスワードをここに';

ただ、検証時に何度か連続でパスワードの変更を実施したところ以下のエラーが発生しました。

「パスワードの検証に失敗しました。このユーザーのパスワードは最近変更したばかりです。」

このエラーがでるとパスワードが更新できません。
この挙動について原因を調べてみました。

調査結果

DBが稼働しているサーバーにログインしてコマンドプロンプトを管理者として実行し、「rsop.msc」と入力して「ポリシーの結果セット」を開きます。

[Windowsの設定]-[セキュリティの設定]-[アカウントポリシー]-[パスワードのポリシー]と進むと、
「パスワードの変更禁止期間」が表示されます。

ソースGPOがDefault Domain Policyになっているため、パスワードのポリシーは、ドメインのグループポリシーで設定されていることが分かります。

最後にパスワード変更したタイミングから、ここで設定している日数(例えば3日)が経過するとパスワードの変更が可能となるようです。
ちなみに、日数が1日の場合は、24時間という意味で、2020/08/07 15:00にパスワードを変更した場合、次回変更可能となる日時は2020/08/08 15:00となります。

まとめ

パスワードを変更した際にでる「パスワードの検証に失敗しました。このユーザーのパスワードは最近変更したばかりです。」というエラーについて、関連している設定値「パスワードの変更禁止期間」を調べる方法について書きました。

※ただし、「パスワードポリシーを適用する」にチェックを入れていない場合は何度も変更できるようです。