sql server 還原數(shù)據(jù)庫(kù)時(shí)提示數(shù)據(jù)庫(kù)正在使用,無(wú)法進(jìn)行操作的解決方法
這個(gè)問(wèn)題的原因在于有用戶連接了當(dāng)前要做還原的數(shù)據(jù)庫(kù),這里的用戶甚至包括當(dāng)前要做還原的用戶。解決辦法就是關(guān)閉與要還原數(shù)據(jù)庫(kù)的所有連接。
腳本之家小編推薦的一個(gè)方法:到服務(wù)里面重啟下sqlserver服務(wù)即可。
問(wèn)題一描述:SQL Server數(shù)據(jù)庫(kù)備份還原后,在數(shù)據(jù)庫(kù)名稱后會(huì)出現(xiàn)“受限制訪問(wèn)”字樣
問(wèn)題二描述:在對(duì)SQL Server數(shù)據(jù)庫(kù)進(jìn)行還原時(shí),提示:System.Data.SqlClient.SqlError:因?yàn)閿?shù)據(jù)庫(kù)正在使用,所以無(wú)法獲得對(duì)數(shù)據(jù)庫(kù)的獨(dú)占訪問(wèn)權(quán)。(Microsoft.SqlServer.Smo)。出現(xiàn)此問(wèn)題的原因是在還原數(shù)據(jù)庫(kù)時(shí),有其他用戶正在使用數(shù)據(jù)庫(kù)。還原數(shù)據(jù)庫(kù)要求數(shù)據(jù)庫(kù)工作在單用戶模式。通常就是DBA在操作時(shí),不允許其他用戶連接數(shù)據(jù)庫(kù)。
問(wèn)題一解決辦法:
右鍵點(diǎn)擊數(shù)據(jù)庫(kù) -> 屬性 -> 選項(xiàng) -> 狀態(tài) -> 限制訪問(wèn) -> 選擇Multiple -> 確定。
問(wèn)題二解決辦法:
方法一(最方便):右鍵點(diǎn)擊數(shù)據(jù)庫(kù) -> 屬性 -> 選項(xiàng) -> 狀態(tài) -> 限制訪問(wèn) -> 選擇Single-> 確定。然后還原。
方法二(最直接):斷開數(shù)據(jù)庫(kù)連接
方法三(最暴力):注銷/重啟數(shù)據(jù)庫(kù)服務(wù)器
方法四(最麻煩):寫代碼修改數(shù)據(jù)庫(kù)相關(guān)屬性,雖然麻煩,有的時(shí)候還是要用到,那就用到的時(shí)候再研究。
①先切換數(shù)據(jù)庫(kù)到master數(shù)據(jù)庫(kù)。執(zhí)行語(yǔ)句
select * from master..sysprocesses where dbid=db_id( '數(shù)據(jù)庫(kù)名稱')
②然后逐步運(yùn)行語(yǔ)句 exec kill spid(上一步結(jié)果集中的數(shù)據(jù)),
問(wèn)題就解決了。哈哈
今天在還原數(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ā)原因:是因?yàn)槲以谶€原數(shù)據(jù)庫(kù)的時(shí)候,還有其他的用戶正在使用數(shù)據(jù)庫(kù),所以就會(huì)出現(xiàn)以上提示。
解決方法:
設(shè)置數(shù)據(jù)庫(kù)在單用戶模式下工作。
設(shè)置方法:在需要還原的數(shù)據(jù)庫(kù)上右擊,在右鍵菜單命令上選擇"屬性"- >"選項(xiàng)"- >"狀態(tài)"- >"限制訪問(wèn)"- >"Single"。這是SQLSERVER2005的菜單命令,其它版本請(qǐng)自己查找。
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
利用SQL語(yǔ)句,斷開所有用戶鏈接,并回滾所有事務(wù),具體SQL語(yǔ)句如下:
ALTER DATABASE [數(shù)據(jù)庫(kù)名稱]
SET OFFLINE WITH ROLLBACK IMMEDIATE
注意:在使用方法2與3時(shí),不要在需要的還原的數(shù)據(jù)庫(kù)下執(zhí)行,建議在master數(shù)據(jù)庫(kù)下面執(zhí)行。
相關(guān)文章
sql?server?數(shù)據(jù)庫(kù)鎖教程及鎖操作方法
SQL?Server數(shù)據(jù)庫(kù)鎖機(jī)制是保證并發(fā)性和數(shù)據(jù)一致性的關(guān)鍵,它通過(guò)不同級(jí)別的鎖和鎖類型(共享、排他、更新等)來(lái)管理資源訪問(wèn),了解和正確使用鎖機(jī)制,可以幫助開發(fā)者設(shè)計(jì)高效、并發(fā)性強(qiáng)的數(shù)據(jù)庫(kù)應(yīng)用,本文介紹sql?server?數(shù)據(jù)庫(kù)鎖教程及鎖操作,感興趣的朋友一起看看吧2025-02-02
sql server建表時(shí)設(shè)置ID字段自增的簡(jiǎn)單方法
這篇文章主要介紹了 sql server建表時(shí)設(shè)置ID字段自增的簡(jiǎn)單方法,需要的朋友可以參考下2017-10-10
深入SQL截取字符串(substring與patindex)的詳解
本篇文章是對(duì)SQL截取字符串(substring與patindex的使用)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
sql server創(chuàng)建復(fù)合主鍵的2種方法
sql server創(chuàng)建復(fù)合主鍵的2種方法,需要的朋友可以參考一下2013-02-02
Sql Server中的系統(tǒng)視圖詳細(xì)介紹
這篇文章主要介紹了Sql Server中的系統(tǒng)視圖詳細(xì)介紹,本文講解了系統(tǒng)視圖是干什么呢、都定義在哪呢、一些使用例子等內(nèi)容,需要的朋友可以參考下2015-02-02
SQL Server存儲(chǔ)過(guò)程同時(shí)返回分頁(yè)結(jié)果集和總數(shù)
這篇文章主要為大家詳細(xì)介紹了SQL Server存儲(chǔ)過(guò)程同時(shí)返回分頁(yè)結(jié)果集和總數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
SQL?server配置ODBC數(shù)據(jù)源(本地和服務(wù)器)詳細(xì)步驟
ODBC是open database connect的縮寫,意思是開放式數(shù)據(jù)庫(kù)連接,下面這篇文章主要給大家介紹了關(guān)于SQL?server配置ODBC數(shù)據(jù)源(本地和服務(wù)器)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
SQL中字段自增(IDENTITY,序列Sequence)的兩種方法
本文主要介紹了SQL中字段自增,主要包括IDENTITY,序列Sequence的兩種方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11

