2008-12-15 44 views
2

我在我的數據庫中有幾個流氓spid,當我登錄爲sa並使用sp_who時,我可以看到它正在睡覺,但嘗試使用kill <spid>消除它們失敗,我實際上沒有訪問服務器本身來反彈它。有沒有其他方式可以殺死這些東西?如何在Sybase中殺死一個不守規矩的spid?

回答

3

系統進程無法被終止。例如,在sp_who的輸出中,cmd是NETWORK HANDLER,鏡像處理程序和CHECKPOINT SLEEP(或很少,CHECKPOINT)和AUDIT PROCESS不能被終止。如果他們具有「recv睡眠」,「發送睡眠」,「鬧鐘睡眠」和「鎖定睡眠」狀態,則可以將其殺死。

在sp_who輸出中,無法判斷狀態爲「recv sleep」的進程是否屬於正在使用SQL Server的用戶,但可能暫停檢查命令的結果,或者該進程是否指示用戶重新啓動了PC或其他終端,並且留下了一個擱淺的進程。您可以通過查詢sysprocesses表瞭解更多有關可疑進程的信息。對於前:

選擇hostprocess,程序名sysprocess中,其中SPID = 8

如果program_name是你知道ISQL這SPID可以被殺死(等等...)

0

我有一個客戶端應用程序有時會做類似的事情。客戶端通常位於select的中間,但不再檢索行。 (這可能是客戶端遊標,但我不確定)。這些spid似乎不可撼動。我必須找到用戶並要求他們註銷。

我有這些的另一種情況是在服務器上發生錯誤或堆棧跟蹤之後。檢查你的錯誤日誌,看看有沒有什麼可笑的條目。如果有,那麼重啓將是您唯一的選擇。