プロジェクト

全般

プロフィール

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ロール」を正式付与するメンテナンスを行います。

  • スタンドアロンモードでのインスタンス起動
    1. 「管理ツール」→「サービス」を起動します。
    2. 「SQL Server (インスタンス名)」を選択し、「サービスの停止」を実行します。
    3. 「SQL Server (インスタンス名)」を右クリックして「プロパティ」を実行します。
    4. 「開始パラメーター」に「-m」を記入し、「開始」を実行して閉じます。
    5. 上記でSQLインスタンスがスタンドアロンモードで起動します。

スタンドアロンモードでは単一ユーザでの操作となります。接続数が1になるため
複数セッションで操作するManagement Studioでは操作が遅くなったり、素早い
切替操作を行うと接続エラーが発生する場合があります。

この状態でローカル管理者(サーバ名¥Administrator)ユーザを追加し、ロールに
「sysadmin」権限をチェックします。完了したら下記の操作を行います。
(Management Studioの操作については省略します。)

  • マルチユーザモードでのインスタンス起動
    1. 「管理ツール」→「サービス」を起動します。
    2. 「SQL Server (インスタンス名)」を選択し、「サービスの停止」を実行します。
    3. 「SQL Server (インスタンス名)」を右クリックして「プロパティ」を実行します。
    4. 「開始パラメーター」に「-m」を削除し、「開始」を実行して閉じます。
    5. 上記でSQLインスタンスがマルチユーザモードで起動します。