1. 程式人生 > >重新命名資料報錯:無法用排他鎖鎖定該資料庫,以執行該操作。 (Microsoft SQL Server,錯誤: 5030)

重新命名資料報錯:無法用排他鎖鎖定該資料庫,以執行該操作。 (Microsoft SQL Server,錯誤: 5030)

一般來說,在確保沒有客戶端連線的情況下,重新命名資料庫不會報這個錯

解決方法:

Use master 

EXEC sp_dboption 'OldDbName', 'Single User', 'TRUE' 
EXEC sp_renamedb 'OldDbName', 'NewDbName' 
EXEC sp_dboption 'NewDbName', 'Single User', 'FALSE' 
GO


在有外來使用者訪問資料庫的情況下執行
EXEC sp_dboption 'OldDbName', 'Single User', 'TRUE' 
EXEC sp_dboption 'NewDbName', 'Single User', 'FALSE' 
這兩條語句的意思是將資料庫轉換為單使用者模式和非單使用者模式,這樣可以避免在重新命名資料庫的時候有其它使用者對資料庫進行操作,造成死鎖。 

可以查詢有沒有人訪問
select spid 
from master.dbo.sysprocesses 
where dbid=db_id('OldDbName') 
結果集中顯示的是當前連線到資料庫 OldDbName 的連線,比如結果是  
22
33
當然啦,實際值應該不是這兩個。然後執行  
kill 22
kill 33
關閉已建立的連線,再執行上面的三行程式碼就可以完成資料庫的重新命名。