sqlspid
A. 有人知道為什麽sqlSERVER的spid是從50開始的嗎
50以下都是SQLServer系統自帶的進程.
由於在windows之上sql server有一套自己的os,所以這些對於windows來說是線程的對於sql os是進程。
這也就是為什麼sys.sysprocesses而不是sys.systhread。
B. sql server kill spid 會不會回滾
如果kill的時候還有事務沒有提交,沒有提交的事務是會被回滾的。
例如
select * from aaaa
update aaaa set a='1'
如果你在 update aaaa還沒結束時kill,這個update就會被回滾。
C. 怎樣用DBArtisan觀察SYBASE中某個spid執行的SQL語句
經過觀察發現,總是有一個進程會長時間的佔用日誌空間,無法釋放,只能殺掉該進程,為了找到該進程是哪個客戶端程序,故整理如下方法來獲取該進程正在執行的SQL語句。
通過返回的SQL語句,定位了故障程序,解決了一個大bug
第一步,打開sybase central,在左邊視圖中,雙擊資料庫伺服器名稱,然後雙擊「登錄」文件夾,在右邊的視圖中選擇「增加登錄」。新建一個「登錄」,輸入登錄名:ts,設置口令,然後單擊下一步,直到完成。
第二步,在新建好的登錄名上單擊滑鼠右鍵,選擇「屬性」選項。
第三步,在屬性窗口中選擇「角色」頁,點擊「增加角色」按鈕。
第四步,在彈出窗口中選中sa_role和sybase_ts_role兩個角色(按住ctrl鍵來多選),點擊「確定」按鈕保存設置。
第六步,輸入語句select * from syslogshold,如果有記錄返回,則記住第三個欄位(spid)的值。
第七步,輸入SQL語句:dbcc traceon(3604)dbcc sqltext(上一步中第三個欄位的值)執行,輸出結果即為該進程正在執行的SQL語句。
D. 是什麼意思,sql,死鎖中spid是啥
SQL Server中的SPID,是唯一的sessionID
像.net中的session一樣,如果能知道了資料庫中的sessionID,那所有的操作都能知道了,因為有了這個唯一的身份識別的標識。
可以做的事情有很多,如:當前哪個用戶在做什麼操作,在執行什麼sql, 又如一個比較大的邏輯中要分別執行很多存儲過程,
在執行這些存儲過程的過程當中,你想知道當前執行的進度,SQLServer正在執行哪個段sql語句,那麼通過sessionID是很容易
就得到這些信息的。
SQL Server 得到SPID,唯一的sessionID:
SELECT @@SPID
以前我一直不知道,最近又裝了SQLServer2014,發現每開一個Query 界面就有一個ID出來。我就特別想知道怎麼取sessionID.
下面的存儲過程是用來查看哪些sessionID正在執行什麼操作。
createPROC[dbo].[dba_WhatSQLIsExecuting]
AS
BEGIN
--Donotlockanything,anddonotgethelpbyanylocks.--?
SELECT[Spid]=session_Id
,ecid
,[Database]=DB_NAME(sp.dbid)
,[User]=nt_username
,[Status]=er.status
,[Wait]=wait_type
,[IndivialQuery]=SUBSTRING(qt.text,
er.statement_start_offset/2,
(CASEWHENer.statement_end_offset=-1
THENLEN(CONVERT(NVARCHAR(MAX),qt.text))*2
ELSEer.statement_end_offsetEND-
er.statement_start_offset)/2)
,[ParentQuery]=qt.text
,Program=program_name
,Hostname
,nt_domain
,start_time
FROMsys.dm_exec_requestser
INNERJOINsys.sysprocessesspONer.session_id=sp.spid
CROSSAPPLYsys.dm_exec_sql_text(er.sql_handle)asqt
WHEREsession_Id>50--Ignoresystemspids.
ANDsession_IdNOTIN(@@SPID)--Ignorethiscurrentstatement.
--andDB_NAME(sp.dbid)='RangeCheckTool'
ORDERBY1,2
END
E. sql資料庫佔用內存太大如何處理
sql server沒有辦法釋放內存,內存都是系統自動管理的
除非你殺調哪些佔用內存大的進程
sql 語句沒寫好,死鎖...都會導致佔用內存很大
select * from master..sysprocesses
kill spid --spid 就是上面查到的spid欄位
F. sql 中blkby 與spid一樣代表什麼
SQL Server 中,一個 spid 代表一個會話.
------解決方案--------------------
你每次select @@spid都一樣,是因為你在SQLServerManagementstudio(簡稱SSMS)中的那個執行語句的頁面其實spid就是54,你打開新頁面再執行,肯定不一樣。普及一下,spid<=50的是系統的會話,所以平時查詢,最好加>50。
G. sql 死鎖中spid是什麼意思
指主體已經保持至少一個資源,但又提出了新的資源請求,而該資源已被其它主體佔有,此時請求主體阻塞,但又對自己已獲得的其它資源保持不放。
每隊汽車已經佔有了一條車道,又想獲得另一條由其它車隊佔有的車道,造成阻塞。
H. 如何查詢SQL進程,並殺死進程
如何查詢SQL進程,並殺死進程。
--步驟1 觀察SQL進程:將使用資料庫「PXJY」的進程取出
--參考:SQL幫助:sysprocesses,DB_ID
select *
--主要有用的是這幾個列:
spid,dbid,uid,open_tran,status,cmd,loginame
--這些列的意義可以參看幫助。
from master.dbo.sysprocesses
where dbid=(select db_id(N'pxjy'))
--步驟2 殺死進程
--參考:SQL幫助:KILL
--假設剛才取出的記錄級中有記錄,spid=1
KILL 1
--其他需要考慮的問題如:sysprocesses的查看許可權,判斷取出的記錄集是否為空集,多條記錄的循環殺死。