私はこのクエリを使用してデータベースの名前を変更しています:
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
ただし、実行するとエラーが表示されます。
メッセージ5030、レベル16、状態2、行1
操作を実行するためにデータベースを排他的にロックできませんでした。
クエリに問題はありますか?
データベースをシングルユーザーモードに設定してみてください。
https://stackoverflow.com/a/11624/2408095
use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
データベースをシングルモードに設定します。
ALTER DATABASE dbName
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
データベースの名前を変更してみてください。
ALTER DATABASE dbName MODIFY NAME = NewName
データベースをマルチユーザーモードに設定します。
ALTER DATABASE NewName
SET MULTI_USER WITH ROLLBACK IMMEDIATE
最初にデータベースへのすべての接続を閉じてみてください。
use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
here から取得
オブジェクトエクスプローラでデータベースを右クリックして、[プロパティ]に移動することもできます。そこからオプションに移動します。一番下までスクロールし、アクセス制限をSINGLE_USERに設定します。データベース名を変更してから戻って、MULTI_USERに戻します。
これは私のためにそれをしました:
USE [master];
GO
ALTER DATABASE [OldDataBaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
EXEC sp_renamedb N'OldDataBaseName', N'NewDataBaseName';
-- Add users again
ALTER DATABASE [NewDataBaseName] SET MULTI_USER
GO
これは、他の誰かがデータベースにアクセスしているためです。データベースをシングルユーザーモードにして、名前を変更します。
このリンクは問題の解決に役立つ場合があります:http://msdn.Microsoft.com/en-IN/library/ms345378(v = sql.105).aspxおよびこのリンク:http://msdn.Microsoft.com/en-us/library/ms345378.aspx =
他の回答に示されているように、データベースをシングルユーザーモードに変更します。
場合によっては、シングルユーザーモードに変換した後でも、データベースに許可されている唯一の接続が使用されていることがあります。
シングルユーザーモードに変換した後でも接続を閉じるには、次を試してください。
select * from master.sys.sysprocesses
where spid>50 -- don't want system sessions
and dbid = DB_ID('BOSEVIKRAM')
結果を見て、問題のデータベースへの接続のIDを確認します。
次に、以下のコマンドを使用してこの接続を閉じます(データベースはシングルユーザーモードになっているため、1つだけにする必要があります)
KILL connection_ID
Connection_idを最初のクエリの結果のIDに置き換えます
1.データベースセット1番目のシングルユーザーモード
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
2.データベースの名前を変更する
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
3.DATABAE SET MULIUSERモード
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER WITH ROLLBACK IMMEDIATE
すべての接続を閉じる別の方法:
管理ツール>ローカルサービスの表示
「SQL Server(MSSQLSERVER)」サービスの停止/開始
ALTER DATABASE dbName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
このsqlステートメントは、データベースのアクセス制御を複数のユーザーから単一のユーザー(つまり、あなた)に変更し、dbの唯一のユーザーになります。これで、データベースの名前を変更できます。
2.データベースの名前を変更します:
ALTER DATABASE dbName MODIFY NAME = NewName
このsqlステートメントは、db名を希望する名前に変更するという重要な作業を行います。
3.データベースをマルチユーザーモードに設定します。
ALTER DATABASE NewName SET MULTI_USER WITH ROLLBACK IMMEDIATE
Db名を変更した後、アクセス制御を変更して、デフォルトのMulti_userに戻しました。
注:それでもエラーが発生する場合は、この記事を参照して詳細を参照してください 方法:データベースの名前を変更する(Sql Server Management Studio)
use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
exec sp_renamedb 'BOSEVIKRAM','BOSEVIKRAM_Deleted'
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER