24
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

エニプラAdvent Calendar 2022

Day 23

うっかりSQLServerにログインできなくなった時の対処法

Last updated at Posted at 2022-12-22

目次

  • はじめに
  • ①SQLServer認証でログインできるように設定をする。
  • ②CLIからユーザー作成をしてログインをする。
  • 最後に
  • 参考サイト

はじめに

現場のセキュリティ対応でSQLServerからlocal/AdministratorsのグループをLoginsのエントリーから外さないといけません。

2022-12-23 (1).png

何も迂回路を作らず、指示通りに二つ返事でAdministratorsグループをLoginsから削除したところ、見事にSQLServerに接続できなくなったぞ!
もちろん事前にsaも無効化しているので、万全にログインできません。

というトラブル対応のお手伝いをしました。

解決法として、CLIからSQLServer認証のログインアカウントを作成し、無事復旧させることができました。
という、1つ学んだトラブル対応方法のメモです。

現場での環境はSQLServer2016ですが、対応方法としてバージョンの大差はないと思います。

①SQLServer認証でログインできるように設定をする。

SQLServerのインストール時や、SQLServerManagementStudio(以下SSMS)のプロパティにて、ログイン時の認証を設定する項目があり、
Windows認証のみか、Windows認証とSQLServer認証の両方を使用できるようにするか選択する項目があります。

2022-12-23 (2).png

しかし、SQLServerにログインできない状態ではSSMSからプロパティを変更することができないので、レジストリエディタを使って該当する箇所の値を変更します。

レジストリエディタから、
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.[インスタンス名]\MSSQLServer
に行くと[LoginMode]という項目があります。

2022-12-23 (4).png

こちらの値が1の場合、Windows認証のみでのログイン、2の場合はSQLServer認証も可能となります。
この値が2でないと後続の対応ができません。

②CLIからユーザー作成をしてログインをする。

SQLServerの構成マネージャーを開き、SQLServerを停止させます。
ServerAgentが起動していたらこの時に同時に止めてください。

SQL Serverを右クリック→プロパティ→スタートアップのタブにて
起動オプションに-mだけの項目を追加します。

2022-12-23.png

-mをつけることでシングルユーザーモード(特権モード)で起動となるようです。
プロパティを閉じて、SQLServerのサービスを起動。
この時、Agentは立ち上げないように。奪われてしまいログインできなくなります。

次に、Powershellを実行し、SQLサーバーへ接続します。

SQLCMD -S [サーバーホスト名]

以下のコマンドを入力してログインIDを作成、
作成したIDにsysadmin権限を付与する

CREATE LOGIN [臨時のログインID] WITH PASSWORD='[パスワード]'
GO
EXEC sp_addsrvrolemember [臨時のログインID], sysadmin
GO

以下コマンド実行例

PS C:\Users\Administrator> SQLCMD -S localhost
1> CREATE LOGIN LOGINUSER WITH PASSWORD='Password123'
2> GO
1> EXEC sp_addsrvrolemember LOGINUSER, sysadmin
2> GO
1> quit
PS C:\Users\Administrator>

コマンドが正常に通ったら、構成マネージャーで先ほど操作した起動オプションから-mを外して、SQLSERVERのサービスを再起動します。

これで作成したアカウントからSQLServerにログインできるようになりました。

最後に

①と②は違うサーバーで起こりました。
1つ目のサーバーで行った対処は②のみで、
2つ目のサーバーで万全の対策をして臨んだところ、認証方法がWindowsのみになっており、作成したアカウントでログインできず…①の対応を行ったという結果となります。
トラブル対応からも色々と学ぶことが多いです。

参考サイト

SQL Server - 完全にロックアウトされてログインできない時の対処方法

24
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?