システム管理者がロックアウトされた場合の SQL Server への接続
このトピックでは、SQL Server データベース エンジンへのアクセスをシステム管理者として回復する方法について説明します。 システム管理者は、次のいずれかの理由により、SQL Serverのインスタンスにアクセスできなくなる可能性があります。
sysadmin 固定サーバー ロールのメンバーであるログインがすべて、誤って削除された。
sysadmin 固定サーバー ロールのメンバーである Windows グループがすべて、誤って削除された。
sysadmin 固定サーバー ロールのメンバーであるログインの使用者が退社したか不在である。
sa アカウントが無効になっているか、パスワードが不明である。
アクセスを回復する方法の 1 つは、SQL Serverを再インストールし、すべてのデータベースを新しいインスタンスにアタッチすることです。 この解決方法は時間がかかるうえ、ログインを復旧するには、バックアップから master データベースを復元する必要が生じる場合があります。 master データベースのバックアップが古いと、一部の情報が含まれていない可能性があります。 master データベースのバックアップが新しいと、以前のインスタンスと同じログインが含まれているために管理者がロックアウトされたままになる可能性があります。
解像度
-m または -f オプションを使用して、SQL Serverのインスタンスをシングル ユーザー モードで開始します。 これにより、コンピューターのローカル Administrators グループのメンバーがすべて、固定サーバー ロール sysadmin のメンバーとして SQL Server のインスタンスに接続できるようになります。
Note
シングル ユーザー モードで SQL Server のインスタンスを開始するときは、まずSQL Server エージェント サービスを停止します。 そうしないと、SQL Server エージェントが最初に接続され、2 番目のユーザーとして接続できなくなる可能性があります。
sqlcmd または SQL Server Management Studio で -m オプションを使用すると、指定したクライアント アプリケーションへの接続を制限できます。 たとえば、 -m"sqlcmd" は接続を 1 つの接続に制限し、その接続はそれ自体を sqlcmd クライアント プログラムとして識別する必要があります。 このオプションは、 SQL Server をシングル ユーザー モードで起動するときに、その唯一の接続を不明なクライアント アプリケーションによって使用されていた場合に使用します。 Management Studioのクエリ エディターを使用して接続するには、 -m"Microsoft SQL Server Management Studio - Query" を使用します。
重要
このオプションをセキュリティ機能として使用しないでください。 クライアント アプリケーションの名前はクライアント アプリケーションによって接続文字列の一部として指定されるため、本当の名前が指定されるとは限りません。
シングル ユーザー モードでSQL Serverを開始する方法の詳細については、「サーバースタートアップ オプションの構成 (SQL Server 構成マネージャー)」を参照してください。
詳細な手順
次の手順では、Windows 8 以降で実行されているSQL Server 2014 に接続するプロセスについて説明します。 以前のバージョンの SQL Server または Windows の場合の若干の調整についても示しています。 これらの手順は、ローカル管理者グループのメンバーとして Windows にログインしているときに実行する必要があり、コンピューターにSQL Server Management Studioがインストールされていることを前提としています。
[スタート] ページから、SQL Server Management Studioを開始します。 [表示] メニューの [登録済みサーバー]をクリックします (サーバーをまだ登録していない場合は、 [ローカル サーバー グループ]を右クリックし、 [タスク]をポイントして、 [ローカル サーバーの登録]をクリックします)。
[登録済みサーバー] で、サーバーを右クリックし、 [SQL Server 構成マネージャー]をクリックします。 管理者として実行してもよいかどうかが確認され、構成マネージャー プログラムが起動します。
Management Studioを終了します。
SQL Server 構成マネージャーの左ペインで、 [SQL Server のサービス] を選択します。 右ペインで、 SQL Serverインスタンスを探します (SQL Server の既定のインスタンスには、コンピューター名の後に (MSSQLSERVER) が付いています。 名前付きインスタンスは、[登録済みサーバー] に表示されているものと同じ名前が大文字表記で表示されます)。 SQL Server のインスタンスを右クリックし、[プロパティ] をクリックします。
[ スタートアップ パラメーター ] タブの [ スタートアップ パラメーターの指定 ] ボックスに「」と入力
-m
し、 をクリックしますAdd
。 (入力文字はダッシュの後に小文字の m です)。Note
以前のバージョンの SQL Server では、 [起動時のパラメーター] タブがない場合があります。その場合は、 [詳細設定] タブで、 [起動時のパラメーター] をダブルクリックします。 パラメーターが小さいウィンドウに表示されます。 既存のパラメーターは、いずれも変更しないように注意してください。 最後に、新しいパラメーター
;-m
を追加し、[OK
] をクリックします (入力文字はセミコロンの後に小文字の m です)。をクリック
OK
し、再起動するメッセージの後にサーバー名を右クリックし、[再起動] をクリック します。SQL Serverが再起動されると、サーバーはシングル ユーザー モードになります。 SQL Server エージェントが実行されていないことを確認します。 起動した場合、それが唯一の接続となります。
Windows 8 のスタート画面で、Management Studio のアイコンを右クリックします。 画面の下部で、 [管理者として実行]を選択します (これにより、管理者資格情報が SSMS に渡されます)。
Note
以前のバージョンの Windows では、 [管理者として実行] オプションはサブメニューとして表示されます。
構成によっては、SSMS が複数の接続の確立を試みます。 SQL Server はシングル ユーザー モードなので、複数の接続は失敗します。 次のいずれかの操作を選択して実行できます。 次のいずれかの操作を行います。
Windows 認証 (管理者の資格情報を含む) を使用してオブジェクト エクスプローラーと接続します。 [セキュリティ] 、 [ログイン] の順に展開し、自身のログインをダブルクリックします。 [ サーバーの役割] ページで、 を選択
sysadmin
し、 をクリックしますOK
。オブジェクト エクスプローラーではなく、Windows 認証 (管理者の資格情報を含む) を使用してクエリ ウィンドウと接続します (この方法で接続できるのは、オブジェクト エクスプローラーに接続しなかった場合のみです)。次のようなコードを実行して、固定サーバー ロールのメンバーである新しい Windows 認証ログインを
sysadmin
追加します。 次の例では、CONTOSO\PatK
という名前のドメイン ユーザーを追加します。CREATE LOGIN [CONTOSO\PatK] FROM WINDOWS; ALTER SERVER ROLE sysadmin ADD MEMBER [CONTOSO\PatK];
SQL Server を混合認証モードで実行している場合、Windows 認証 (管理者の資格情報を含む) を使用してクエリ ウィンドウと接続します。 次のようなコードを実行して、固定サーバー ロールのメンバーである新しいSQL Server認証ログインを
sysadmin
作成します。CREATE LOGIN TempLogin WITH PASSWORD = '************'; ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin;
警告
************ は強力なパスワードと置き換えてください。
SQL Serverが混合認証モードで実行されていて、アカウントの
sa
パスワードをリセットする場合は、Windows 認証 (管理者の資格情報を含む) を使用してクエリ ウィンドウに接続します。 次の構文を使用して、sa
アカウントのパスワードを変更します。ALTER LOGIN sa WITH PASSWORD = '************';
警告
************ は強力なパスワードと置き換えてください。
次の手順では、SQL Serverマルチユーザー モードに戻ります。 SSMS を閉じます。
SQL Server 構成マネージャーの左ペインで、 [SQL Server のサービス] を選択します。 右ペインで、 SQL Serverインスタンスを右クリックし、 [プロパティ] をクリックします。
[スタートアップ パラメーター] タブの [既存のパラメーター] ボックスで を選択
-m
し、 をクリックします。Remove
Note
以前のバージョンの SQL Server では、 [起動時のパラメーター] タブがない場合があります。その場合は、 [詳細設定] タブで、 [起動時のパラメーター] をダブルクリックします。 パラメーターが小さいウィンドウに表示されます。 前に追加した を
;-m
削除し、 をクリックしますOK
。サーバー名を右クリックし、 [再起動] をクリックします。
これで、固定サーバー ロールのメンバーになったいずれかのアカウントで正常に sysadmin
接続できるようになります。
参照
シングル ユーザー モードでの SQL Server の起動
データベース エンジン サービスのスタートアップ オプション