我想追蹤從Sql Server表中刪除的幾行嗎?我打算編寫一個觸發器來跟蹤發送刪除請求的機器或進程。如何獲取正在運行的sql的machineName和processId?
是否有可能知道在Sql Server 2005中的觸發器來跟蹤從哪個Sql被調用的machineName和processId?
我想追蹤從Sql Server表中刪除的幾行嗎?我打算編寫一個觸發器來跟蹤發送刪除請求的機器或進程。如何獲取正在運行的sql的machineName和processId?
是否有可能知道在Sql Server 2005中的觸發器來跟蹤從哪個Sql被調用的machineName和processId?
你可以用SQL Server Profiler中做到這一點
http://i.stack.imgur.com/p7Asn.png
也試試這個:
SELECT sqltext.TEXT,
req.session_id,
req.status,
req.command,
req.cpu_time,
req.total_elapsed_time
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
您可以從sysprocesses中你認爲合適的添加等欄目,你需要首先創建ProcessLog表。
CREATE TRIGGER [dbo].[LogDelete] ON [dbo].[SampleTable] AFTER DELETE AS
BEGIN
SET NOCOUNT ON;
INSERT INTO dbo.ProcessLog
SELECT
program_name
, net_address
, hostname
FROM
sys.sysprocesses
WHERE
spid = @@SPID
END
是的,但是有可能在SP或觸發器中跟蹤它嗎? –