SQL Server 用シングル ユーザー モード

適用対象:SQL Server

この記事では、シングル ユーザー モードで SQL Server インスタンスを開始するための情報と手順について説明します。このモードでは、1 人のユーザーのみがインスタンスに接続できます。

インスタンスをシングル ユーザー モードで開始する

SQL Server をシングル ユーザー モードで起動すると、コンピューターのローカル Administrators グループのメンバーはすべて、固定サーバー ロール sysadmin のメンバーとして SQL Server のインスタンスに接続できるようになります。 詳細については、「システム管理者がロックアウトされた場合の SQL Server への接続」を参照してください。

特定の状況では、起動オプション-mを使用して、SQL Server のインスタンスをシングル ユーザー モードで起動することが必要になる場合もあります。 たとえば、サーバーの構成オプションを変更したり、破損した master データベースやその他のシステム データベースを復旧したりする必要がある場合があります。 いずれの場合も、 SQL Server のインスタンスをシングル ユーザー モードで起動する必要があります。

次の例では、SQL Server インスタンスがシングル ユーザー モードで起動され、SQL Server Management Studio クエリ エディターからの接続のみが許可されます。

net start "SQL Server (MSSQLSERVER)" /m"Microsoft SQL Server Management Studio - Query"

Linux 上の master データベースをシングルユーザー モードで復元する方法については、「Linux 上のマスター データベースをシングルユーザー モードで復元する」を参照してください。

一般的な考慮事項

シングル ユーザー モードで SQL Server のインスタンスを起動する場合は、次の点に注意してください。

  • 1 人のユーザーのみがサーバーに接続できます。

  • CHECKPOINT プロセスは実行されません。 既定では、このプロセスは、起動時に自動的に実行されます。

注意

シングル ユーザー モードの場合、 SQL Server のインスタンスに接続する前に SQL Server エージェント サービスを停止してください。そうしないと、 SQL Server エージェント サービスによってその接続が使用されるため、SQL Server のインスタンスがブロックされます。

シングル ユーザー モードで SQL Server のインスタンスを起動すると、 SQL Server Management Studio で SQL Serverに接続できます。 Management Studio のオブジェクト エクスプローラーでは、一部の操作で複数の接続が必要になるため失敗することがあります。 SQL Server をシングル ユーザー モードで管理するには、Management Studio または Azure Data Studio のクエリ エディターを介して接続することにより Transact-SQL ステートメントを実行するか、sqlcmd ユーティリティを使用します。

SQLCMD または Management Studio で -m オプションを使用すると、接続を特定のクライアント アプリケーションに限定できます。

注意

Linux では、SQLCMD は、このように大文字で入力する必要があります。

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

重要

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

Always On に関する考慮事項

Always On フェールオーバー クラスター インスタンス (FCI) として構成されている、またはデータベースが Always On 可用性グループ (AG) の一部であるSQL Server インスタンスで単一サーバー モードを使用する場合、追加の考慮事項があります。

可用性グループ

SQL Server がシングル ユーザー モードで起動される際、Always On 可用性グループとグループ内のデータベースの起動はスキップされます。 シングル ユーザー モードで SQL Server を起動する必要があるデータベースに関する問題のトラブルシューティングを行う必要があり、データベースが可用性グループの一部でもある場合は、単一ユーザー モードで SQL Server を開始する前に可用性グループからデータベースを削除することで、データベースをオンラインにする必要があります。

フェールオーバー クラスター インスタンス

クラスター環境に SQL Server をインストールした場合、 SQL Server をシングル ユーザー モードで起動すると、利用可能な接続がクラスター リソースの dll によって占有され、サーバーに対する他の接続がブロックされます。 SQL Server がこの状態に陥ると、SQL Server エージェントのリソースをオンラインに戻そうとしたときに、SQL のリソースが別のノードにフェールオーバーする可能性があります (リソースがそのグループに影響するように構成されていた場合)。

この問題を回避するには、次の手順に従います。

  1. SQL Server の詳細プロパティから起動時のパラメーター -m を削除します。

  2. SQL Server リソースをオフラインにします。

  3. このグループの現在の所有者ノードのコマンド プロンプトで、次のコマンドを発行します:

    net start MSSQLSERVER /m
    
  4. クラスター アドミニストレーターまたはフェールオーバー クラスター管理コンソールから、 SQL Server リソースがまだオフライン状態にあるかどうかを確認します。

  5. ここで、次のコマンドを使用して SQL Server に接続し、必要な操作を行います: SQLCMD -E -S<servername>。

  6. 操作が完了したら、コマンド プロンプトを閉じ、クラスター アドミニストレーターから SQL および他のリソースをオンラインに戻します。