jeffluo 发表于 2016-9-1 09:19:11

【DBA 救命錦囊】 之 【拯救無法轉回Single User Mode】

許多情況下,需要將資料庫轉成Single User Mode模式。譬如說,需要進行DBCC CHECKDB WITHREPAIR_ALLOW_DATA_LOSS。該項作業曾經在多年前因為DISK部分資料毀損,需要緊急進行修復,將資料庫轉換成Single User Mode,才可以進行。
但是最近常碰到轉換成Single User Mode之後,查詢select spid from master.dbo.sysprocesses where db_name(dbid)='你的資料庫' ,也沒有人連線,但是就是無法轉回正常MULTI_USER Mode ,並且出現以下的錯誤。
...
Msg 5064, Level 16, State 1, Line 9
此時無法變更資料庫'TSQL' 的狀態或選項。該資料庫處於單一使用者模式,而且已有使用者連線到此資料庫。
Msg 5069, Level 16, State 1, Line 9
ALTER DATABASE 陳述式失敗。
解決辦法,很簡單
【步驟一】卸離資料庫
【步驟二】再一次上載
詳細驗證DBCC CHECKDB指令如下
--砍掉連線
use master
select spid from master.dbo.sysprocesses
where db_name(dbid)='TSQL'
--kill 65
--步驟一
USE
GO
ALTER DATABASE
SETSINGLE_USER WITH NO_WAIT
GO
--步驟二 修復
DBCC CHECKDB (,REPAIR_ALLOW_DATA_LOSS)
--步驟三 回復
USE
GO
ALTER DATABASE SETMULTI_USER WITH NO_WAIT
GO
--救命錦囊
USE
GO
EXEC master.dbo.sp_detach_db
@dbname = N'TSQL'
GO
--救命錦囊最後步驟
USE
GO
CREATE DATABASE ON
( FILENAME = N'E:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\TSQL2012.mdf' ),
( FILENAME = N'F:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\TSQL2012_log.ldf' )
FOR ATTACH
GO


來源:https://www.facebook.com/groups/222546864546011/896587140475310/?notif_t=group_activity&notif_id=1472573757254327


页: [1]
查看完整版本: 【DBA 救命錦囊】 之 【拯救無法轉回Single User Mode】