一.Sql server還原失敗(數(shù)據(jù)庫(kù)正在使用,無(wú)法獲得對(duì)數(shù)據(jù)庫(kù)的獨(dú)占訪問(wèn)權(quán))
本次測(cè)試使用數(shù)據(jù)庫(kù)實(shí)例SqlServer2008r2版
錯(cuò)誤詳細(xì):
標(biāo)題: Microsoft SQL Server Management Studio
------------------------------
還原數(shù)據(jù)庫(kù)“Mvc_HNHZ”時(shí)失敗。 (Microsoft.SqlServer.Management.RelationalEngineTasks)
------------------------------
其他信息:
System.Data.SqlClient.SqlError: 因?yàn)閿?shù)據(jù)庫(kù)正在使用,所以無(wú)法獲得對(duì)數(shù)據(jù)庫(kù)的獨(dú)占訪問(wèn)權(quán)。 (Microsoft.SqlServer.SmoExtended)
原因分析:
在SqlServer2008r2中在還原數(shù)據(jù)庫(kù)時(shí),在執(zhí)行備份操作的時(shí)候,如果有正在訪問(wèn)的用戶或者沒(méi)有關(guān)閉的數(shù)據(jù)庫(kù)鏈接,則還原失敗。
二、解決方案
解決方案1.
如果你使用管理工具還原數(shù)據(jù)庫(kù)并且在Microsoft SQL Server Management Studio 2016或以上版本的話,可以在還原的時(shí)候勾選"關(guān)閉到目標(biāo)數(shù)據(jù)庫(kù)的現(xiàn)有鏈接"
解決方案2:
如果你的SqlServer Management Studio的版本比較低,可以設(shè)置數(shù)據(jù)庫(kù)為單用戶模式,執(zhí)行完還原操作后,恢復(fù)為多用戶模式
設(shè)置方式:選中要還原的數(shù)據(jù)庫(kù)-->屬性-->選項(xiàng)-->限制訪問(wèn)
該值從MULTI_USER修改為SINGLE_USER,此時(shí)該數(shù)據(jù)庫(kù)就會(huì)顯示為單用戶模式
這是GUI的模式,語(yǔ)句的辦法比較簡(jiǎn)單
---設(shè)置數(shù)據(jù)庫(kù)為單用戶模式
USE MASTER
GO
ALTER DATABASE eol_tcgroup SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
---設(shè)置數(shù)據(jù)庫(kù)為多用戶模式
USE MASTER
GO
ALTER DATABASE eol_tcgroup SET MULTI_USER WITH ROLLBACK IMMEDIATE;
GO
解決方案3:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-638386.html
完全使用T-Sql的方式,執(zhí)行備份數(shù)據(jù)庫(kù)操作文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-638386.html
use master
go
---聲明變量
declare @dbName nvarchar(max)='Mvc_HNHZ';
declare @dbFullName nvarchar(max)='E:\NewWork\Web\backup\test1.bak';
--1.1修改為單用模式
exec(N'ALTER DATABASE '+@dbName+' SET SINGLE_USER WITH ROLLBACK IMMEDIATE');
--1.2結(jié)束鏈接進(jìn)程
DECLARE @kid varchar(max)
SET @kid=''
SELECT @kid=@kid+'KILL '+CAST(spid as Varchar(10)) FROM master..sysprocesses
WHERE dbid=DB_ID(@dbName) ;
EXEC(@kid) ;
--2.執(zhí)行還原語(yǔ)句
restore database @dbName from disk=@dbFullName
with replace --覆蓋現(xiàn)有的數(shù)據(jù)庫(kù)
--3.重置數(shù)據(jù)庫(kù)為多用戶模式
exec(N'ALTER DATABASE '+@dbName+' SET MULTI_USER WITH ROLLBACK IMMEDIATE');
到了這里,關(guān)于Sql server還原失敗(數(shù)據(jù)庫(kù)正在使用,無(wú)法獲得對(duì)數(shù)據(jù)庫(kù)的獨(dú)占訪問(wèn)權(quán))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!