このクエリを使用してデータベースの名前を変更しています。
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
ただし、実行時にエラーが表示されます。
メッセージ5030、レベル16、状態2、行1
データベースは、操作を実行するために排他的にロックできませんでした。
クエリに問題はありますか?
このクエリを使用してデータベースの名前を変更しています。
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
WITH ROLLBACK IMMEDIATE
必要。まったく使用しない場合、問題が発生しますか?
WITH ROLLBACK IMMEDIATE
他のユーザーが操作している可能性のあるデータベースを変更しながら、これらの操作の整合性を確保するために使用する必要があります。ただし、データベースを再度MULTI_USERモードに戻す場合、データベースはすでにSINGLE_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
WITH ROLLBACk IMMEDIATE
マルチユーザーに使用する必要がありますか?
でSQL Server Management Studioを(SSMS):
あなたはまた、右でデータベースをクリックすることができ、オブジェクトエクスプローラとに行くのプロパティ。そこから、オプションに移動します。一番下までスクロールして、[ アクセス制限]をSINGLE_USERに設定します。データベース名を変更してから、戻ってMULTI_USERに戻します。
最初にデータベースへのすべての接続を閉じるようにしてください:
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
ここから撮影
これは私のためにそれをしました:
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に置き換えます
use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
exec sp_renamedb 'BOSEVIKRAM','BOSEVIKRAM_Deleted'
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER