還原數據庫出現“未獲得排他訪問”解決方法(殺死數據庫連接的存儲過程sqlserver)
阿新 • • 發佈:2017-07-14
get type open mod con eat lis proc padding
as
begin
declare@sqlnvarchar(500)
declare@spidint
set@sql=‘declare getspid cursor for select spid from sysprocesses where dbid in (select dbid from sysdatabases where name=‘ +@dbname+‘ )‘
exec(@sql)
open getspid
fetch next from getspid into@spid
while @@fetch_status<>-1
begin
exec(‘kill ‘+@spid)
fetch next from getspid into@spid
end
close getspid
deallocate getspid
end
--使用方法
set @dbname=‘‘‘zcc‘‘‘ --得到的變量為‘zcc‘。
set @dbname=‘zcc‘ --得到的變量是zcc
在master數據庫下創建存儲步驟例如以下:
createproc killspid (@dbnamevarchar(20))as
begin
declare@sqlnvarchar(500)
declare@spidint
set@sql=‘declare getspid cursor for select spid from sysprocesses where dbid in (select dbid from sysdatabases where name=‘ +@dbname+‘ )‘
exec(@sql)
open getspid
fetch
while @@fetch_status<>-1
begin
exec(‘kill ‘+@spid)
fetch next from getspid into@spid
end
close getspid
deallocate getspid
end
--使用方法
use master
exec killspid ‘‘‘數據庫名‘‘‘
單引號嵌套
用三個單引號的作用,最外層的單引號表示vchar。第二個單引號是轉義。最裏面的單引號是字符串中的單引號。declare @dbname nvarchar(500)
還原數據庫出現“未獲得排他訪問”解決方法(殺死數據庫連接的存儲過程sqlserver)