2012-06-11 8 views
6

पर सभी क्वेरी को मारने/समाप्त करने के लिए कैसे करें मास्टर डीबी पर इस क्वेरी को निष्पादित करने के बाद, यह मुझे सभी डेटाबेस पर सभी चल रही प्रक्रिया दे रहा है, कोई क्वेरी है जो डेटाबेस पर चल रही सभी प्रक्रियाओं को मार डालेगी।एसक्यूएल सर्वर 2008

USE 
Master 
GO 

SELECT 
SPID,DBID FROM SYSPROCESSES 
WHERE 
DBID NOT IN (1,2,3,4) AND SPID >50 AND SPID<> @@spid 
+1

"जो एक डेटाबेस पर चल रहे सभी प्रक्रिया मार देगा" के लिए सभी प्रक्रियाओं को मारने के लिए SQL स्क्रिप्ट नीचे देखें - अब क्यों पृथ्वी पर किसी को भी ऐसा करना चाहते हैं ! –

+0

@ मिच: हम अपने डमी डेटाबेस पर परीक्षण कर रहे हैं, इसलिए – Buzz

+1

चिंता करने की कोई आवश्यकता नहीं है? यदि आप उदास करना चाहते हैं एकल उपयोगकर्ता मोड पर जाएं, हर किसी को डिस्कनेक्ट करने के लिए मजबूर करने के तरीके हैं (['रोलबैक तत्काल'] (http://msdn.microsoft.com/en-us/library/bb522682.aspx)) –

उत्तर

16

देखें आप डिस्कनेक्ट करने के लिए हर दूसरे कनेक्शन के लिए मजबूर करना चाहते हैं, और आप उपयुक्त अनुमतियाँ, आप में और single user mode से बाहर डेटाबेस उछाल कर सकते हैं:

alter database current set single_user with rollback immediate; 
go 
alter database current set multi_user; 
go 

को किसी भी अन्य कनेक्शन एक ही डेटाबेस समाप्त कर दिया जाएगा।

+0

"वैकल्पिक डाटाबेस वर्तमान ..." केवल SQL Server 2012 से समर्थित है और – Sharken

+0

@Sharken - yes, 'current' केवल समर्थित है 2012 में। पिछले संस्करणों के लिए आपको डेटाबेस का नाम देना होगा। –

+0

आपने अभी अपना जीवन बचाया है! – Bobby

1

आप KILL बयान ऊपर क्वेरी परिणाम पर एक कर्सर के साथ संयुक्त उपयोग कर सकते हैं।

Kill (Transact-SQL)

+3

हाँ, आप कर सकते थे .... लेकिन आप पागल हो जाएंगे .... –

1

कृपया किसी दिए गए डेटाबेस (SQL सर्वर 2014)

Declare @DbName nvarchar(60)='YourDBName' 
Declare @SPID int 

--get all processes 
DECLARE @Table TABLE( 
    SPID INT, 
    Status VARCHAR(MAX), 
    LOGIN VARCHAR(MAX), 
    HostName VARCHAR(MAX), 
    BlkBy VARCHAR(MAX), 
    DBName VARCHAR(MAX), 
    Command VARCHAR(MAX), 
    CPUTime INT, 
    DiskIO INT, 
    LastBatch VARCHAR(MAX), 
    ProgramName VARCHAR(MAX), 
    SPID_1 INT, 
    REQUESTID INT 
) 

INSERT INTO @Table EXEC sp_who2 
--using cursor to kill all processes 
Declare cur_KillAllProcesses CURSOR FAST_FORWARD FOR 
Select 
SPID 
From @Table 
WHERE [email protected] 
OPEN cur_KillAllProcesses 

FETCH NEXT FROM cur_KillAllProcesses INTO 
@SPID 

WHILE @@FETCH_STATUS=0 
BEGIN 

--add kill process command 

Exec('KILL '+ @SPID) 


FETCH NEXT FROM cur_KillAllProcesses INTO @SPID 

END 

CLOSE cur_KillAllProcesses 
DEALLOCATE cur_KillAllProcesses 
+0

प्रक्रियाओं को मारने का यह उचित तरीका है, धन्यवाद आदमी –