システム管理者がロックアウトされた場合の 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 のインスタンスに接続できるようになります。

注意

シングル ユーザー モードで SQL Server のインスタンスを起動する場合は、まず SQL Server エージェント サービスを停止してください。 そうしないと、SQL Server エージェントによって先に接続が行われ、2 番目のユーザーとして接続できなくなる場合があります。

sqlcmd または SQL Server Management Studio で -m オプションを使用すると、接続を特定のクライアント アプリケーションに限定できます。 たとえば、-m"sqlcmd" を使用すると、接続が、sqlcmd クライアント プログラムとして識別される必要がある単一の接続に限定されます。 このオプションは、SQL Server をシングル ユーザー モードで起動するときに、その唯一の接続を不明なクライアント アプリケーションによって使用されていた場合に使用します。 Management Studio のクエリ エディターを使用して接続するには、-m"Microsoft SQL Server Management Studio - Query" を使用します。

セキュリティに関する注意セキュリティに関する注意

このオプションをセキュリティ機能として使用しないでください。 クライアント アプリケーションの名前はクライアント アプリケーションによって接続文字列の一部として指定されるため、本当の名前が指定されるとは限りません。

SQL Server をシングル ユーザー モードで起動する詳細な手順については、「サーバーのスタートアップ オプションの構成 (SQL Server 構成マネージャー)」を参照してください。

詳細な手順

次の手順では、Windows 8 で実行されている SQL Server 2012 に接続するためのプロセスについて説明します。 以前のバージョンの SQL Server または Windows の場合の若干の調整についても示しています。 ここで示す手順は、ローカルの Administrators グループのメンバーとして Windows にログオンした状態で実行する必要があります。また、この手順では、コンピューターに SQL Server Management Studio がインストールされていることを前提としています。

  1. スタート ページで、SQL Server Management Studio を起動します。 [表示] メニューの [登録済みサーバー] をクリックします (サーバーをまだ登録していない場合は、[ローカル サーバー グループ] を右クリックし、[タスク] をポイントして、[ローカル サーバーの登録] をクリックします)。

  2. [登録済みサーバー] で、サーバーを右クリックし、[SQL Server 構成マネージャー] をクリックします。 管理者として実行してもよいかどうかが確認され、構成マネージャー プログラムが起動します。

  3. Management Studio を終了します。

  4. SQL Server 構成マネージャーの左ペインで、[SQL Server のサービス] を選択します。 右ペインで、SQL Server インスタンスを探します (SQL Server の既定のインスタンスには、コンピューター名の後に (MSSQLSERVER) が付いています。 名前付きインスタンスは、[登録済みサーバー] に表示されているものと同じ名前が大文字表記で表示されます)。SQL Server インスタンスを右クリックし、[プロパティ] をクリックします。

  5. [起動時のパラメーター] タブの [起動時のパラメーターの指定] ボックスに、「-m」と入力し、[Add] をクリックします (入力文字はダッシュの後に小文字の m です)。

    注意

    以前のバージョンの SQL Server では、[起動時のパラメーター] タブがない場合があります。 その場合は、[詳細設定] タブで、[起動時のパラメーター] をダブルクリックします。 パラメーターが小さいウィンドウに表示されます。 既存のパラメーターは、いずれも変更しないように注意してください。 最後に、新しいパラメーター ;-m を追加し、[OK] をクリックします (入力文字はセミコロンの後に小文字の m です)。

  6. [OK] をクリックし、再起動するためのメッセージが表示されたら、サーバー名を右クリックし、[再起動] をクリックします。

  7. SQL Server の再起動後、サーバーはシングル ユーザー モードになります。その SQL Server エージェントが実行されていないことを確認してください。 起動した場合、それが唯一の接続となります。

  8. Windows 8 のスタート画面で、Management Studio のアイコンを右クリックします。 画面の下部で、[管理者として実行] を選択します (これにより、管理者資格情報が SSMS に渡されます)。

    注意

    以前のバージョンの Windows では、[管理者として実行] オプションはサブメニューとして表示されます。

    構成によっては、SSMS が複数の接続の確立を試みます。 SQL Server はシングル ユーザー モードなので、複数の接続は失敗します。 次のいずれかの操作を選択して実行できます。 次のいずれかの操作を行います。

    1. Windows 認証 (管理者の資格情報を含む) を使用してオブジェクト エクスプローラーと接続します。 [セキュリティ][ログイン] の順に展開し、自身のログインをダブルクリックします。 [サーバー ロール] ページで、[sysadmin] を選択し、[OK] をクリックします。

    2. オブジェクト エクスプローラーではなく、Windows 認証 (管理者の資格情報を含む) を使用してクエリ ウィンドウと接続します (この方法で接続できるのは、オブジェクト エクスプローラーと接続していない場合のみです)。sysadmin 固定サーバー ロールのメンバーである新しい Windows 認証ログインを追加するには、次のようなコードを実行します。 次の例では、CONTOSO\PatK という名前のドメイン ユーザーを追加します。

      CREATE LOGIN [CONTOSO\PatK] FROM WINDOWS;
      ALTER SERVER ROLE sysadmin ADD MEMBER [CONTOSO\PatK];
      
    3. SQL Server を混合認証モードで実行している場合、Windows 認証 (管理者の資格情報を含む) を使用してクエリ ウィンドウと接続します。 sysadmin 固定サーバー ロールのメンバーである新しい SQL Server 認証ログインを作成するには、次のようなコードを実行します。

      CREATE LOGIN TempLogin WITH PASSWORD = '************';
      ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin;
      
      注記注意

      ************ は強力なパスワードと置き換えてください。

    4. SQL Server を混合認証モードで実行していて、sa アカウントのパスワードをリセットする場合、Windows 認証 (管理者の資格情報を含む) を使用してクエリ ウィンドウと接続します。 次の構文を使用して、sa アカウントのパスワードを変更します。

      ALTER LOGIN sa WITH PASSWORD = '************';
      
      注記注意

      ************ は強力なパスワードと置き換えてください。

  9. 次の手順では、SQL Server をマルチユーザー モードに戻します。 SSMS を閉じます。

  10. SQL Server 構成マネージャーの左ペインで、[SQL Server のサービス] を選択します。 右ペインで、SQL Server インスタンスを右クリックし、[プロパティ] をクリックします。

  11. [起動時のパラメーター] タブの [既存のパラメーター] ボックスで、[-m] を選択し、[Remove] をクリックします。

    注意

    以前のバージョンの SQL Server では、[起動時のパラメーター] タブがない場合があります。 その場合は、[詳細設定] タブで、[起動時のパラメーター] をダブルクリックします。 パラメーターが小さいウィンドウに表示されます。 前の手順で追加した ;-m を削除し、[OK] をクリックします。

  12. サーバー名を右クリックし、[再起動] をクリックします。

これで、sysadmin 固定サーバー ロールのメンバーであるアカウントの 1 つを使用して正常に接続できます。

関連項目

概念

シングル ユーザー モードでの SQL Server の起動

データベース エンジン サービスのスタートアップ オプション