有次我在SQL Server上还原备份的文件,出现了“因为数据库正在使用,所以无法获得对数据库的独占访问权。”的错误,试了几个方法都不行,最好只能用了T-SQL的方式,执行备份数据库操作
use master
go
---声明变量
declare @dbName nvarchar(max)='HHData';
declare @dbFullName nvarchar(max)='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\20181123';
--1.1修改为单用模式
exec(N'Alter DATABASE '+@dbName+' SET SINGLE_USER WITH ROLLBACK IMMEDIATE');
--1.2结束链接进程
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.执行还原语句
restore database @dbName from disk=@dbFullName
with replace --覆盖现有的数据库
--3.重置数据库为多用户模式
exec(N'Alter DATABASE '+@dbName+' SET MULTI_USER WITH ROLLBACK IMMEDIATE');