程序防止SqlServer使用SqlServer Profiler跟踪

思路:

1、使用默认函数(fn_trace_getinfo)查询跟踪列表;

2、调用系统存储过程(sp_trace_setstatus)修改跟踪状态。

相关Sql :

declare @default_trace_id sql_variant

--查询数据库默认跟踪id
select @default_trace_id = value from sys.configurations where configuration_id = 1568

--查询数据库跟踪列表
--官方说明:https://docs.microsoft.com/zh-cn/sql/relational-databases/system-functions/sys-fn-trace-getinfo-transact-sql
SELECT distinct traceid FROM sys.fn_trace_getinfo(0)
where traceid <> @default_trace_id;
GO

--修改跟踪的状态
--官方说明:https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-trace-setstatus-transact-sql
--参数说明:trace_id(要修改跟踪的ID),status(状态)
--第二个参数值的枚举及说明
----0 停止指定的跟踪。
----1 启动指定的跟踪。
----2 关闭指定的跟踪并从服务器中删除其定义。
EXEC sp_trace_setstatus 2, 0
GO

原文地址:https://www.cnblogs.com/lrl45/p/10005797.html