當前位置:首頁 » 編程語言 » 殺掉執行sql進程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

殺掉執行sql進程

發布時間: 2023-03-09 13:52:38

『壹』 sql server 裡面如何終止一個正在執行的存儲過程

要知道這個存儲過程執行的SPID才行,可以在Enterprise Manager裡面目前活動裡面找到
然後在查詢分析器裡面 執行kill SPID 語句就可以了

『貳』 linux 如何強制關閉sql developer

強制關閉步驟:
1、用命令ps -ef | grep sql 查找出所有帶sql的進程.
2、在顯示出來的列當中選擇sql developer進程id,也就是pid。
3、然後執行命令:kill all xxx(pid數字)
4、進程已被殺掉,sql developer已經退出。

『叄』 如何終止SQL Server中的用戶進程

首先,我們在主資料庫中創建「KILL2」這個進程,代碼如下所示(參考圖一):

USE [master]
GO
IF EXISTS (SELECT * FROM master.dbo.sysobjects
WHERE id = OBJECT_ID(N'[kill2]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[kill2]
GO
--Usage1: Kill2 '51-57' --> Kills all the session IDs from 51 to 57
--Usage2: Kill2 '58' --> Kills the session IDs 58
--Usage3: Kill2 '51,56,100,58'
--> Kills the session IDs 51,56,100 and 58
--Usage4: Kill2 'DB=MyDatabase'
--> Kills all the session IDs that are connected
to the database "MyDatabase"
use master
go
set concat_null_yields_null off
go
create procere kill2 @param2 varchar(500)
as
--declare @param2 varchar(500)
declare @param varchar(500)
declare @startcount int
declare @killcmd varchar(100)
declare @endcount int
declare @spid int
declare @spid2 int
declare @tempvar varchar(100)
declare @tempvar2 varchar(100)
--set @param2 ='54'
set @param=REPLACE(@param2,' ','')
if CHARINDEX('-',@param) <> 0
begin
select @startcount= convert(int,SUBSTRING(@param,1,charindex('-',@param)-1))
select @endcount=convert(int,SUBSTRING(@param,charindex('-',@param)+1,(LEN(@param)-charindex('-',@param))))
print 'Killing all SPIDs from ' + convert(varchar(100),@startcount)+' to ' +convert(varchar(100),@endcount)
while @startcount <=@endcount
begin
set @spid=(select spid from master.dbo.sysprocesses where spid=@startcount and spid>50)
if @spid = @startcount
begin
print 'Killing '+convert(varchar(100),@startcount)
set @killcmd ='Kill '+convert(varchar(100),@startcount)
exec(@killcmd)
end
else
begin
Print 'Cannot kill the SPID ' +convert(varchar(100),@startcount) + ' because it does not Exist'
end
set @startcount=@startcount + 1
end
end
if CHARINDEX(',',@param) <> 0
begin
set @tempvar =@param
while charindex(',',@tempvar ) <> 0
begin
SET @tempvar2=left(@tempvar,charindex(',',@tempvar)-1)
set @spid=(select spid from master.dbo.sysprocesses where spid=CONVERT(varchar(100),@tempvar2) and spid>50)
if @spid = CONVERT(varchar(100),@tempvar2)
begin
print 'Killing '+CONVERT(varchar(100),@tempvar2)
set @killcmd='Kill '+CONVERT(varchar(100),@tempvar2)
exec (@killcmd)

end
else
begin
Print 'Cannot kill the SPID ' +CONVERT(varchar(100),@tempvar2) + ' because it does not Exist'
end
set @tempvar =REPLACE(@tempvar,left(@tempvar,charindex(',',@tempvar)),'')
end
set @spid=(select spid from master.dbo.sysprocesses where spid=CONVERT(varchar(100),@tempvar) and spid>50)
if @spid = CONVERT(varchar(100),@tempvar)
begin
print 'Killing '+CONVERT(varchar(100),@tempvar)
set @killcmd='Kill '+CONVERT(varchar(100),@tempvar)
exec (@killcmd)

end
else
begin
Print 'Cannot kill the SPID ' +CONVERT(varchar(100),@tempvar) + ' because it does not Exist'
end
end
if CHARINDEX('=',@param2) <>0
begin
print 'Killing all the SPIDs that are connected to the database '+RIGHT(@param2,(len(@param2)-3))
declare dbcursor
cursor forward_only for select SPID from master.dbo.sysprocesses where DB_NAME(dbid) = RIGHT(@param2,(len(@param2)-3))
open dbcursor
fetch dbcursor into @spid
while @@FETCH_STATUS =0
begin
set @spid2=(select spid from master.dbo.sysprocesses where spid=@spid and spid>50)
if @spid = @spid2 begin
print 'Killing '+CONVERT(varchar(100),@spid2)
set @killcmd='Kill '+CONVERT(varchar(100),@spid2)
exec (@killcmd)

end
else
begin
Print 'Cannot kill the SPID ' +CONVERT(varchar(100),@spid2) + ' because it does not Exist'
end
fetch dbcursor into @spid
end
close dbcursor
deallocate dbcursor
end
if CHARINDEX('-',@param)=0 and CHARINDEX(',',@param) = 0 and CHARINDEX('=',@param)=0
begin
set @spid=(select spid from master.dbo.sysprocesses where spid=CONVERT(varchar(100),@param) and spid>50)
if @spid = CONVERT(varchar(100),@param)
begin
print 'Killing '+CONVERT(varchar(100),@param)
set @killcmd='Kill '+CONVERT(varchar(100),@param)
exec (@killcmd)

end
else
begin
Print 'Cannot kill the SPID ' +CONVERT(varchar(100),@param) + ' because it does not Exist'
end
end
go
--kill2 '51'
--go
--kill2 '51-56'
--go
--kill2 '56,57,58,52'
--go
--kill2 'db=AdventureWorks2008'
--kill2 'db=My Database'
--go
--sp_who

圖一
現在,我們假設進程ID(SPID)為51、52、53、54、55、57這幾個進程(見圖二)連接到了SQL Server資料庫,而我們只想把進程ID為54、55和57的進程結束掉。

圖二
執行以下命令。注意,在這個例子當中還在命令中加入了其他幾個SQL Server中不存在的SPID:61和100。

use master
go
kill2 '54,57,55,61,100'
go

運行結果:

Killing 54
Killing 57
Msg 6104, Level 16, State 1, Line 1
Cannot use KILL to kill your own process.
Cannot kill the SPID 55 because it does not Exist
Cannot kill the SPID 61 because it does not Exist
Cannot kill the SPID 100 because it does not Exist

圖三
我們可以從結果(見圖三)看到,執行指令後成功終止了SPID 54。當試圖終止57時失敗了。同時結果也顯示了為什麼沒能終止特定SPID的信息
下面,假設我們有51、52、53、54、55、57、58、59和60這幾個SPID,而我們的目標是結束SPID從25到70的進程。
執行以下命令:

use master
go
kill2 '25-75'
go

運行結果:

Killing all SPIDs from 25 to 75
Cannot kill the SPID 25 because it does not Exist
…..
Cannot kill the SPID 48 because it does not Exist
Cannot kill the SPID 49 because it does not Exist
Cannot kill the SPID 50 because it does not Exist
Killing 51
Killing 52
Killing 53
Killing 54
Killing 55
Cannot kill the SPID 56 because it does not Exist
Killing 57
Msg 6104, Level 16, State 1, Line 1
Cannot use KILL to kill your own process.
Killing 58
Killing 59
Killing 60
Cannot kill the SPID 61 because it does not Exist
.....
Cannot kill the SPID 75 because it does not Exist

圖四
從結果(見圖四)我們可以看到「KILL2」存儲過程忽略了所有SPID小於50的連接,而結束了從51到70的所有進程。

接下來,假設我們要終結掉所有連接到資料庫AdventureWorks2008的會話,同時又假設SPID為53、54、58和60的進程連接到了該資料庫(見圖五)。

圖五
現在,我們執行以下的T-SQL語句結束掉所有這些會話。

Use master
go
kill2 'db=AdventureWorks2008'
go

運行結果:

Killing all the SPIDs that are connected to the database AdventureWorks2008
Killing 53
Killing 54
Killing 58
Killing 60

圖六
從結果(見圖六)我們可以看到「KILL2」存儲過程終止了所有連接到AdventureWorks2008資料庫的會話。
用法四
「KILL2」存儲過程的第四種用法類似於「KILL命令,也就是一次解決一個會話,如下所示:

Use master
go
kill2 '56'
go

『肆』 sql 怎麼手動殺死死鎖進程

用kill命令,殺進程。

『伍』 sql中如何終止正在運行的資料庫進程

mysqlwindows可以這樣操作;不過最好還是寫腳本卻執行吧,這里的文件如果操作過一次後需要手動刪除,不然下次執行會報錯。

SELECTCONCAT('KILL',id,';')FROMinformation_schema.processlistINTOOUTFILE'D:\tmp.txt';
sourceD:\tmp.txt;


php腳本如下:

$result=mysql_query("SHOWFULLPROCESSLIST");
while($row=mysql_fetch_array($result)){
$process_id=$row["Id"];
if($row["Time"]>200){
$sql="KILL$process_id";
mysql_query($sql);
}
}

『陸』 各位是怎麼終止一個正在執行的SQL語句的

額,函數=方法=易語言的模塊
如何停止函數,你又沒有說什麼語言(⊙o⊙)…好吧,有函數的肯定都差不多吧
還有你也沒有說要停止什麼的函數,停止啥(函數的代碼是迭代語句?)?
跳轉語句:break(結束迭代語句,直接結束咯),continue(結束本次的運行,循環)goto(如:gotoA;如果執行到了gotoA;,就跳轉到A;代碼的下面,這也差不多符合吧!)return(返回的語句),goto符合你的代碼吧,直接跳轉了,也就是執行到了goto的時候,函數就不再執行了。俺是一名渣渣,就易語言厲害,其他正在學習,採納不採納,俺也不在乎,走起
goto A;


A:
{
Console.WriteLine("cg");
}