はじめに
Microsoft SQL Server(以後MSSQL)のインストール初期段階で、認証方式を選択する所がある。
この認証方式を、インストールされた後から切り替えたい場合についての手順を書いておく。
認証方式について(Windows)
Linux版は未確認だが、Windows版のMS SQL Serverには、ログインユーザーの認証方式は以下のものがある。
- SQL認証
- MSSQL自身が認証用データベースを持ち、ログイン管理する方式
- PostgreSQLでいう所のpostgresにあたるsaアカウントもこれに含まれる
- Windows認証
- MSSQLからシステム(この場合Windowsユーザー)にユーザーの正当性を認証依頼を出す方式
- AD等との連携が可能
- C#のMSSQL接続情報で
IntegratedSecurity=true
にするとこちらが使用される - PostgreSQLでいう所のpeerに近いかもしれない
問題は、デフォルトでSQL認証は無効となっている点である。なお、Windows認証を無効にする方法は不明。
このため、SQL認証が前提のシステムだと、ログインができなくなる(エラーコード18456)。
そのため、うっかりSQL認証を無効にしてインストールしてしまった場合、これを切り替える必要が出てくる。
インストール後の切り替え方法
基本的に MS公式の"サーバー認証モードの変更" というドキュメントに従えば問題ない。
だが、リンク先の方法だとどうしてもSSMSでサーバーオプションを切り替える必要がある。
サーバーの制約でSSMSを使用できない場合、この方法は使えない
では、どうすればいいかというと下記のようにする
- レジストリを以下のように書き換える
- キー:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\[インスタンスID]\MSSQLServer
-
[インスタンスID]
については 公式ドキュメントでいう所のMSSQL{nn}.[インスタンス名]
がそれにあたる
-
- 値名: LoginMode
- 値: 2(Windows認証のみにする場合は1)
- キー:
- SQL Serverサービスを再起動する
- 必要ならば、SQLCMDを使い、
alter login [ユーザー名] enable
でログインユーザーを有効にする - 必要ならば、SQLCMDを使い、
alter login [ユーザー名] with PASSWORD='[パスワード]'
でパスワードを設定する