今天在還原數(shù)據(jù)庫(kù)的時(shí)候,提示"因?yàn)閿?shù)據(jù)庫(kù)正在使用,所以無(wú)法獲得對(duì)數(shù)據(jù)庫(kù)的獨(dú)占訪問(wèn)權(quán)",無(wú)論我是重啟數(shù)據(jù)庫(kù),還是重啟計(jì)算機(jī),都不能解決問(wèn)題,多番嘗試后,終于解決了該問(wèn)題?,F(xiàn)將引發(fā)該問(wèn)題的原因與解決方案寫出來(lái),有不對(duì)的地方歡迎大家提出來(lái)。 引發(fā)原
今天在還原數(shù)據(jù)庫(kù)的時(shí)候,提示"因?yàn)閿?shù)據(jù)庫(kù)正在使用,香港虛擬主機(jī),所以無(wú)法獲得對(duì)數(shù)據(jù)庫(kù)的獨(dú)占訪問(wèn)權(quán)",無(wú)論我是重啟數(shù)據(jù)庫(kù),還是重啟計(jì)算機(jī),香港服務(wù)器租用,都不能解決問(wèn)題,多番嘗試后,終于解決了該問(wèn)題。現(xiàn)將引發(fā)該問(wèn)題的原因與解決方案寫出來(lái),有不對(duì)的地方歡迎大家提出來(lái)。
引發(fā)原因:是因?yàn)槲以谶€原數(shù)據(jù)庫(kù)的時(shí)候,還有其他的用戶正在使用數(shù)據(jù)庫(kù),所以就會(huì)出現(xiàn)以上提示。
解決辦法有三種:
第一種:利用游標(biāo)循環(huán)所有正在使用該數(shù)據(jù)庫(kù)的進(jìn)程,并通過(guò)kill命令殺死進(jìn)程。
declare @dbname varchar(50)
set @dbname='數(shù)據(jù)庫(kù)名稱'
declare @sql varchar(50)
declare cs_result cursor local for select 'kill '+cast(spid as varchar(50)) from sys.sysprocesses where db_name(dbid)=@dbname
open cs_result
fetch next from cs_result into @sql
while @@fetch_status=0
begin
execute(@sql)
fetch next from cs_result into @sql
end
close cs_result
deallocate cs_result
注意:不要在需要的還原的數(shù)據(jù)庫(kù)下執(zhí)行,建議在master數(shù)據(jù)庫(kù)下面執(zhí)行
第二種:利用SQL語(yǔ)句,斷開(kāi)所有用戶鏈接,并回滾所有事務(wù)
ALTER DATABASE [數(shù)據(jù)庫(kù)名稱]
SET OFFLINE WITH ROLLBACK IMMEDIATE
注意:不要在需要的還原的數(shù)據(jù)庫(kù)下執(zhí)行,建議在master數(shù)據(jù)庫(kù)下面執(zhí)行
第三種:設(shè)置數(shù)據(jù)庫(kù)在單用戶模式下工作
在需要還原的數(shù)據(jù)庫(kù)上右擊,香港空間,在右鍵菜單命令上選擇"屬性"- >"選項(xiàng)"- >"狀態(tài)"- >"限制訪問(wèn)"- >"Single"。這是SQLSERVER2005的菜單命令,其它版本請(qǐng)自己查找
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com