[英]How to use extended events to track tables used in stored procedures being run
如何使用擴展事件 (SQL Server 2012) 來告訴我何時在存儲過程中使用了某些表。 我想刪除一些表,所以我想知道使用這些表的存儲過程是否實際上正在運行。
代碼示例設置了支持對象。 並創建一個 session ,我希望它可以工作但沒有。 當您運行這些存儲過程( ListEmp
和ListProd
)時,我希望它們被拾起,因為它們包含我正在跟蹤的表( Employees
和Products
)。
注意,我也嘗試使用sp_statement_starting
事件:
-- setup supporting objects
CREATE TABLE Employees (Col1 VARCHAR(10));
CREATE TABLE Products (Col1 VARCHAR(10));
GO
INSERT INTO Employees(Col1) VALUES ('Bob');
INSERT INTO Products(Col1) VALUES ('Bolts');
GO
CREATE PROCEDURE ListEmp
AS
SELECT * FROM Employees;
GO
CREATE PROCEDURE ListProd
AS
SELECT * FROM Products;
GO
-- create extended event (that is not doing what I want)
CREATE EVENT SESSION XE_TrackEmployeesAndProductsTables
ON SERVER
ADD EVENT sqlserver.sp_statement_completed
(
SET collect_statement=1
ACTION
(
sqlserver.database_name,
sqlserver.sql_text
)
WHERE
(
sqlserver.like_i_sql_unicode_string(sqlserver.sql_text,N'%Employees%')
OR sqlserver.like_i_sql_unicode_string(sqlserver.sql_text,N'%Products%')
)
);
ALTER EVENT SESSION XE_TrackEmployeesAndProductsTables ON SERVER STATE=START;
GO
-- run procs that I want to be picked up by my session (but aren't)
EXEC ListEmp;
EXEC ListProd;
-- cleanup
DROP EVENT SESSION XE_TrackEmployeesAndProductsTables ON SERVER;
DROP PROC ListEmp;
DROP PROC ListProd;
DROP TABLE Employees;
DROP TABLE Products;
我只需將其添加到您要跟蹤的任何存儲過程的開頭:
declare @msg nvarchar(128) = concat('Stored proc ',OBJECT_NAME(@@PROCID),' run.')
EXEC master..sp_trace_generateevent @event_class = 82, @userinfo = @msg;
您可以使用 XEvent session 跟蹤,如下所示:
CREATE EVENT SESSION [UserEvent] ON SERVER
ADD EVENT sqlserver.user_event
ADD TARGET package0.event_file(SET filename=N'UserEvent')
您可以像這樣識別引用 static SQL 中的表的所有過程:
select distinct object_name(d.object_id) referencing_object, SCHEMA_NAME(o.schema_id) referencing_object_schema
from sys.sql_dependencies d
join sys.objects o
on o.object_id = d.object_id
where d.referenced_major_id = object_id('Sales.SalesOrderHeader')
and o.type = 'P'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.