web-dev-qa-db-ja.com

SQL Serverインスタンスをマルチユーザーモードに戻す

データベースを復元する必要がありましたが、一部のユーザーはまだ接続されていて、その日は出発していました。以前は、データベースをシングルユーザーに設定していましたが、今はそのオプションが表示されません。

それで、インスタンスレベルで変更を加え、プロパティ/接続/同時ユーザーの最大数を1に設定して、他のすべてのユーザーをサーバーから切断しました。

SQL Serverサービスを再起動しましたが、データベースにアクセスできなくなりました。データベースは稼働していますが、クエリウィンドウを開いたり、[プロパティ]を右クリックして変更を元に戻すことができません。

どうすれば修正できますか?

6
Jacob Thomas

まず、サーバープロパティページの同時接続の最大数を1に設定しないでください。専用管理者接続は引き続き使用できます。

  1. SQL Server構成マネージャーを使用してサービスを再起動し、ログインしてみてください。失敗した場合は、 専用管理者接続 を使用してください。
  2. インスタンス名を右クリックし、同時接続の最大数の値を0(最大を意味する)に変更して、サービスを再起動します。

同時接続の最大数を1に設定した後、ログイン時に次のエラーメッセージが表示されることがあります:

ユーザーのデフォルトデータベースを開けません。ログインに失敗しました。
ユーザー「UserName」のログインに失敗しました

これを修正するには:ログインウィンドウでOptionsボタンをクリックし、default databaseアイテム、tempdbなどのデータベースを選択して、ログインを押します。

データベースがSingle_Userモードの場合

T-SQLの使用:

USE [master];
GO
ALTER DATABASE [YourDatabaseNameHere] SET MULTI_USER WITH NO_WAIT;
GO

SSMSの使用:

  • 必要なデータベースを右クリック->プロパティ
  • データベースプロパティウィンドウの左側で、Optionsをクリックします。
  • 右側を下にスクロールすると、下部にstatusセクションがあります
  • Restrict Accessの値をmulti_userに変更します

データベースがSingle_Userモードであり、Multi_Userに変更したいが、他の誰かがすでに接続しているためにアクセスできない場合、 :

  1. あなたが持っている場合 ALTER ANY CONNECTION権限(sysadminおよびprocessadmin固定サーバーロールの一部)、実行SP_WHOまたはSP_WHO2、ターゲットデータベースを使用してプロセスを見つけ、実行します。

    KILL processid (Ex: KILL 87)
    

    次に、上記のT-SQLを実行して、データベースをmulti_userに戻します。

  2. または、データベースをデタッチしてからアタッチし、上記のT-SQLを実行してmulti_userにすることもできます。これは、運用サーバーでは推奨されません。

11
aasim.abdullah

Assimのソリューションに追加するには、SQLAgentを確認し、すべてのジョブを停止して無効にします。プロセスを強制終了していたDBAがそのすぐ後ろで別のプロセスを起動するために、私はその中に入ってこれを行わなければなりませんでした。ジョブを再度有効にすることを忘れないでください!

2