2011-01-20 129 views
1

我想在會話終止/結束時使用觸發器。可能嗎?觸發殺死會話

我的程序正在連接一個表並在聯機時更新「在線」字段。如果我的程序崩潰或我的MSSQL連接打死,我想更新的「在線」現場...

例如:當我的計劃是在網上,它就會SPID和更新SERVICE_TABLE(SPID,在線)

SEVICE_TABLE 
------------ 
id 
spid 
online 

當會話被終止/結束時,觸發器查找SERVICE_TABLE。在SERVICE_TABLE中殺死spid,將「online」字段更新爲false。

+0

no ............. – 2011-01-20 09:49:28

+0

oh :(你能提供任何解決方案嗎? – ogun 2011-01-20 09:56:02

+0

如果你描述了你認爲上述設計將幫助你解決的問題,我們可能能夠 – 2011-01-20 10:14:47

回答

1

SQL Server中沒有DDL註銷觸發器(雖然有登錄的)。 Service Broker可以用來處理AUDIT_LOGOUT事件。

Does this help

2

我們有類似的情況。我已經基本上添加了一個「lastseen」給我們的服務表的等價物。客戶端中的後臺進程每分鐘更新一次該字段。 (請務必在每次更新字段時創建一個新的數據庫連接。)

如果過去的「lastseen」字段超過5分鐘,我們認爲應用程序已經走了興登堡的路。