立即中斷所有SQL Server連線
立即中斷所有SQL Server連線
1.針對單一資料庫的連線
範例:將Northwind資料庫設定為只能有一個連線,並中斷其他連線
--中斷Northwind資料庫的所有連線
USE master
GO
ALTER
DATABASE [Northwind]
SET SINGLE_USER
WITH ROLLBACK
IMMEDIATE;
GO
--復原為一般多人連線
USE master
GO
ALTER
DATABASE [Northwind]
SET MULTI_USER
WITH ROLLBACK
IMMEDIATE;
GO
2.針對所有SQL Server連線
(1)查出現有連線,一一刪除
EXEC
sp_who
KILL spid號碼
(2)使用T-SQL 的SURSOR取出所有非系統spid,一次全部刪除
USE master
GO
DECLARE @spid_number
int
DECLARE @sql_text varchar(100)
DECLARE CUR CURSOR FOR
SELECT
[spid] FROM master..sysprocesses
WHERE [spid] > 50 and [spid] <>
@@spid
OPEN CUR
FETCH CUR INTO @spid_number
WHILE
(@@FETCH_STATUS=0)
BEGIN
SET @sql_text = 'KILL ' + CAST(@spid_number
as varchar)
EXEC(@sql_text)
FETCH CUR INTO
@spid_number
END
CLOSE CUR
DEALLOCATE CUR
GO
-- Update on 2009-01-18
3.最快速的方式
(1)SQL Server 2005 - 設定資料庫為單一使用者連線
使用SSMS,針對要進行清除連線的資料庫,進入[屬性]設定的頁面
在左邊點選[選項],再到右下方限制存取項目修改為SINGLE_USER,再按確定
或直接用T-SQL
USE [master]
GO
ALTER
DATABASE [AdventureWorks] SET SINGLE_USER WITH NO_WAIT
GO
ALTER DATABASE
[AdventureWorks] SET SINGLE_USER
GO
(2)SQL Server 2000 - 利用卸離Detach資料庫工作
針對要進行清除連線的資料庫,執行卸離資料庫工作