SQL Server - 完全にロックアウトされてログインできない時の対処方法
完全にロックされてログインできない!
今回はめったにないことかもしれませんが、 sa アカウントや sysadmin のロールのメンバーが全員なんらかの理由でログインできなくなってしまった時に SQL Server に接続する方法をご紹介します。
SQL Server - sa アカウントのロック解除方法
SQL Server - 完全にロックアウトされてログインできない時の対処方法
完全にロックアウトされた時は、SQL Server に sysadmin メンバの新しいログインを作って、そのユーザーでログインできるようにします。
今回は名前付きインスタンス MSSQLSERVER2017 がロックアウトされたとします。
手順は次の通りです。
1. SQL Server 構成マネージャーから、SQL Server をシングルユーザーモードで起動する
SQL Server をシングルユーザーモードで起動します。
まず、Windows のスタートメニューの検索で SQLServerManager<バージョン>.msc と入力して、SQL Server 構成マネージャーを開きます。
各 SQL Server に対応するバージョンは以下の通りです。
- SQL Server 2012 - SQLServerManager11.msc
- SQL Server 2014 - SQLServerManager12.msc
- SQL Server 2016 - SQLServerManager13.msc
- SQL Server 2017 - SQLServerManager14.msc
先にログインされてしまうと困るので SQL Server エージェント が起動している場合はストップします。
該当の SQL Server を右クリックし、[プロパティ] を開きます。
[起動時のパラメーター] タブをクリックし、[起動時のパラメーターの指定] の箇所に -m と入力し [追加]をクリックし、[OK] をクリックします。
SQL Server を右クリックし再起動します。 これで、シングルユーザーモードで起動されました。
2. sqlcmd ユーティリティで sysadmin メンバの新しいログインを作成する
Windows のスタートメニューの検索で cmd と入力して、コマンドプロンプトを開きます。
以下のコマンドを入力して sqlcmd ユーティリティを起動します。
sqlcmd -S .\MSSQLSERVER2017
-S オプションはサーバーとインスタスのオプションで、今回は名前付きインスタンスに接続したいので -S .\MSSQLSERVER2017 と指定しました。
デフォルトインスタンスの場合は sqlcmd だけでオプションをつけなくて大丈夫です。
以下のコマンドを実行して、TempLogin1 という名前のログインユーザーを作り、TempLogin1 を sysadmin のメンバーにします。
CREATE LOGIN TempLogin1 WITH PASSWORD='TPl@g1n$' GO EXEC sp_addsrvrolemember TempLogin1, sysadmin GO
Ctrl + C で終了します。
3. SQL Server 構成マネージャーから、SQL Server をマルチユーザモードに戻してリスタートする
SQL Server 構成マネージャーに戻り、先ほど設定した -m の [起動時のパラメーター] を削除します。
SQL Server を右クリックし再起動します。
3. SQL Server Management Studio から作ったユーザーでログインする
ログインできない状態で SQL Server の認証モードを変更する方法
SQL Server Management Studio から、先ほど作ったログインユーザーでログインしてみます。
無事ログインできましたね!
SQL Server - sa アカウントのロック解除方法