Sophos SafeGuard Enterprise データベースの権限修正¶
若干脱線。どっちかというとMS SQL Serverのtips。
目的¶
SGNのSQL Serverでsa(フル管理者システムユーザ)の設定を行っていないか、
混合認証を設定せずsaを利用出来ないといった管理者ユーザが一切利用出来ず
参照も変更も出来なくなった環境が発生することがあります。
このDBを一時的にシングルユーザモードで起動することで、認証したユーザに
管理者権限を与えることが出来、既存Windowsユーザに管理者権限を設定する
ことが出来ます。
トラブルケース¶
SQL Server 2005以前であれば、OSのローカルAdministrator権限のあるユーザ
であればSQL Serverの管理者権限も持っていましたが、2008以降でOSとDBの
管理者権限は分離されました。そのため、下記のように管理者権限を持った
ユーザにアクセス出来ず、操作不能になるケースが存在します。
- ありそうな事例
- ドメインユーザで利用しているが、一時的にドメインが利用出来ない
- ユーザ認証情報を紛失し、パスワードを再設定する必要がある
- DBの所有者であるユーザ名も紛失してしまい、一覧を参照したい
- ユーザ認証などを保存しているDBテーブルが壊れてしまった
対処法¶
インスタンスをシングルユーザモードで起動することで、「OSのローカル
Administrator権限のあるユーザ」に一時的に「sysadminロール」を付与
した状態でデータベースにアクセスすることが出来ます。取り急ぎ今回は
このユーザに「sysadminロール」を正式付与するメンテナンスを行います。
- スタンドアロンモードでのインスタンス起動
- 「管理ツール」→「サービス」を起動します。
- 「SQL Server (インスタンス名)」を選択し、「サービスの停止」を実行します。
- 「SQL Server (インスタンス名)」を右クリックして「プロパティ」を実行します。
- 「開始パラメーター」に「-m」を記入し、「開始」を実行して閉じます。
- 上記でSQLインスタンスがスタンドアロンモードで起動します。
スタンドアロンモードでは単一ユーザでの操作となります。接続数が1になるため
複数セッションで操作するManagement Studioでは操作が遅くなったり、素早い
切替操作を行うと接続エラーが発生する場合があります。
この状態でローカル管理者(サーバ名¥Administrator)ユーザを追加し、ロールに
「sysadmin」権限をチェックします。完了したら下記の操作を行います。
(Management Studioの操作については省略します。)
- マルチユーザモードでのインスタンス起動
- 「管理ツール」→「サービス」を起動します。
- 「SQL Server (インスタンス名)」を選択し、「サービスの停止」を実行します。
- 「SQL Server (インスタンス名)」を右クリックして「プロパティ」を実行します。
- 「開始パラメーター」に「-m」を削除し、「開始」を実行して閉じます。
- 上記でSQLインスタンスがマルチユーザモードで起動します。