モルモルしている

最近はテスト業務ばっかりで書くことがない

SQLServer2016:メンテナンスプランを実行すると「ユーザー 'sa' はログインできませんでした。」のエラーログが出力される。

久々にハマって死にかけたので備忘録。

結論から言うと、SQLServer2016のメンテナンスプランをsaで実行すると、プラン内での処理の実行ごとに

ユーザー 'sa' はログインできませんでした。 理由: パスワードが、指定されたログインのパスワードと一致しませんでした。 [クライアント: ]

というログが出力され、ログイン失敗が回数制限されている場合saがロックアウトされることになります。(なりました↓)

ユーザー 'sa' はログインできませんでした。理由: アカウントは現在ロックされています。システム管理者はロックを解除できます。 [クライアント: ]

普段saしか使ってないのでsaがロックアウトとか死んだ、と思ったけど何とかなった。

システム管理者がロックアウトされた場合の SQL Server への接続 | Microsoft Docs
ここの記事を参考にして、クエリウィンドウになんとか接続。

SQL Server 2005 Management Studio の [ログインをロックアウトする] チェックを外した際の注意点について – Microsoft SQL Server Japan Support Team Blog
ここの記事を見て

ALTER LOGIN [Mary5] WITH PASSWORD = '****' UNLOCK ; 

これを実行してsaのロックアウトの解除に成功。
とはいえ、saのパスワードはあってるし何も問題ないのにジョブを実行した瞬間からエラーが出まくって挙句ロックアウトされる意味が分からず調べたけどよくわからなかった。
が、どうやらSQLServer2016のバグっぽいです。

Maintenance plan - Login failed for user 'sa' on master database
dba.stackexchange.com

回避方法としては、sa認証ではなくWindows認証を使えば不正なログも出力されず正常に実行されるとのこと。
(確かにWindows認証に変更したら正常に実行できました)