在執(zhí)行建庫腳本時(shí),往往會(huì)先將原有的數(shù)據(jù)庫drop掉,由于SqlServer檢測到有數(shù)據(jù)連接時(shí)禁止執(zhí)行drop database操作,所以建庫腳本經(jīng)常執(zhí)行失敗,為此我們需要一種能強(qiáng)制斷開數(shù)據(jù)庫已有連接的方法,可以過如下t-sql實(shí)現(xiàn):
復(fù)制代碼 代碼如下:
declare @i int declare cur cursor for select spid from sysprocesses where db_name(dbid)= 'Your_Database_Name' open cur fetch next from cur into @i while @@fetch_status=0 begin exec('kill '+@i) fetch next from cur into @i end close cur deallocate cur
我們可以把這條sql寫到建庫的批處理腳本里,放在腳本的開始:
復(fù)制代碼 代碼如下:
:: Disconnect existing Fortune database connections
osql -S"%1" -U"%2" -P"%3" -Q"declare @i int declare cur cursor for select spid from sysprocesses where db_name(dbid)= ' Your_Database_Name ' open cur fetch next from cur into @i while @@fetch_status=0 begin exec('kill '+@i) fetch next from cur into @i end close cur deallocate cur"