Sql-Server

SQL Server 觸發器呼叫計數

  • March 4, 2020

有沒有辦法找到在特定會話中呼叫了多少次觸發器?我們的 ETL 應用程序像每行一樣插入記錄而不是語句(即)如果要插入 100 條記錄,我認為 ETL 發出 100 條插入語句而不是在單個批次中插入。所以trigger也叫了100次。我只想確認觸發器被呼叫了 100 次。

我有一個想法,將觸發器更改為具有計數器並將其儲存在表中以查找觸發器呼叫的數量。

有沒有本地方法可以找到這個?

您可以設置擴展事件跟踪並擷取事件類型“sp_statement_completed”。按 object_type=‘trigger’ 過濾跟踪。您還可以傳遞您的觸發器名稱以進一步縮小範圍。以下定義將為您提供一個起點。根據需要調整文件名、位置、大小和 max_file_size。

CREATE event session [CaptureTriggerExecution] ON server ADD event sqlserver.sp_statement_completed( WHERE (
 [package0].[equal_uint64]([object_type],(21076)) 
 AND 
 [object_name]=N'''My Trigger''' 
) 
) ADD target package0.event_file(SET filename=N'CaptureTriggerExecution', 
 max_file_size=(10)) WITH (max_memory=4096 kb, 
event_retention_mode=allow_single_event_loss, 
max_dispatch_latency=30 seconds, 
max_event_size=0 kb, 
memory_partition_mode=none, 
track_causality=ON, 
startup_state=OFF)
GO

引用自:https://dba.stackexchange.com/questions/169439