當前位置:首頁 » 編程語言 » killsql

killsql

發布時間: 2023-04-02 02:31:50

Ⅰ 怎麼用PB編程kill掉資料庫中的進程

你是用的sqlSERVER資料庫嗎?在SQLSERVER2008裡面有個【活動監視器】, 快捷鍵Ctrl+Alt+A, 可以看到操作的狀態以及進程ID,看到哪個佔用時間太久,可以把它kill掉。

Ⅱ 如何終止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

Ⅲ sqlserver2005 無法在用戶事務內部使用 KILL 命令。怎麼解決

LZ的過程應該可以正確執行,我在我的野雹本機橡爛用非sa的管理許可權的用戶執行成功。
LZ執行過程提示錯誤,可能是因為在查詢分析器窗口或者編程的資料庫連接頌如帆中含有未提交完成的事務造成的。

Ⅳ sql kill 進程是強制關閉進程嗎

kill -9 是強制關閉
另外有常用的kill -2;kill -15是正常關閉

Ⅳ sql server中怎樣查詢引起死鎖的sql語句

elect0,blockedfrom(select*fromsysprocesseswhereblocked>0)awherenotexists(select*from(select*fromsysprocesseswhereblocked>0)bwherea.blocked=spid)unionselectspid,>0OPENs_curFETCHNEXTFROMs_curINTO@spid,@blWHILE@@FETCH_STATUS=0beginif@spid=0select'引起資料庫死鎖的是答毀扮:'+CAST(@blASVARCHAR(10))+'進程號,其執行的SQL語法如下'elseselect'進程號SPID:'+CAST(@spidASVARCHAR(10))+'被'+'進程號SPID:'+CAST(@blASVARCHAR(10))+'阻塞,其當前進程執行的SQL語法清灶如下餘缺'DBCCINPUTBUFFER(@bl)

Ⅵ killSQL之後不想回滾怎麼辦

killSQL之後不想缺滑回滾怎麼辦
如果歷扮改kill的時候還有事務沒有提交,沒有肢判提交的事務是會被回滾的。
例如
select * from aaaa
update aaaa set a='1'
如果你在 update aaaa還沒結束時kill,這個update就會被回滾。

Ⅶ Microsoft VBScript 編譯器錯誤 錯誤 '800a0411' 名稱重定義 /sql.Asp,行 20 dim

sql.asp就是包含的資料庫連接,你又寫一遍資料庫連接
沒有意義
,容易出錯
另外極有可能是你包含sql.asp的那個頁面不知道文件名是什麼裡面的內容和sql.asp定義重復了
asp的include就是先把被include的內容寫到頁面里,然後再
解釋執行

熱點內容
androidgif緩存 發布:2024-11-02 18:32:50 瀏覽:342
怎麼在windows下交叉編譯qt 發布:2024-11-02 18:27:31 瀏覽:627
編程自動迷宮 發布:2024-11-02 18:09:48 瀏覽:432
聯想數據守護者手機存儲 發布:2024-11-02 18:09:43 瀏覽:201
游戲存儲空間必須在同一個盤嗎 發布:2024-11-02 18:09:43 瀏覽:677
雲存儲權益 發布:2024-11-02 18:08:59 瀏覽:55
做聯機游戲伺服器的電腦配置 發布:2024-11-02 17:44:36 瀏覽:172
華為編譯器軟體 發布:2024-11-02 17:42:11 瀏覽:123
電視機出場密碼多少 發布:2024-11-02 17:36:23 瀏覽:577
伺服器名稱地址該如何填 發布:2024-11-02 17:31:14 瀏覽:84