SQL Server Profiler 跟踪结果自动存到表中 示列代码
时间: 2024-12-24 21:39:38 浏览: 10
SQL Server Profiler 是Microsoft SQL Server 的一款工具,它允许用户监控数据库活动、跟踪查询性能以及收集其他有关服务器操作的数据。如果你想将跟踪的结果自动存储到一个表中,你可以创建一个数据库事件模板,并设置其动作为“登录”或“查询”,然后指定目标存储过程或触发器处理跟踪数据。
以下是一个简单的示例代码,假设我们有一个名为`dbo.TrackingLog`的表,用于存储跟踪信息:
```sql
-- 创建一个新的跟踪模板
CREATE EVENT TEMPLATE MyTrackTemplate
AS
BEGIN
SET TARGET抚动 ALL
EXECUTE dbo.InsertTrackingData @ServerName = @@SERVERNAME,
@LoginName = loginame(),
@EventTime = event_time,
-- 添加更多你想记录的字段和它们的值
@QueryText = event_data.value(N'(query_text)[1]', 'nvarchar(max)')
END;
-- 其中InsertTrackingData存储过程可能是这样的
CREATE PROCEDURE dbo.InsertTrackingData
(@ServerName sysname,
@LoginName nvarchar(50),
@EventTime datetime,
@QueryText nvarchar(max))
AS
BEGIN
INSERT INTO dbo.TrackingLog (ServerName, LoginName, EventTime, QueryText)
VALUES (@ServerName, @LoginName, @EventTime, @QueryText);
END;
-- 启动Profiler并应用新模板
USE msdb;
EXEC sp_add_job @job_name=N'MyTrackJob',
@enabled=1,
@description=N'Tracks events and saves to TrackingLog table';
EXEC sp_add_jobstep @job_name=N'MyTrackJob',
@step_name=N'Step1',
@subsystem=N'TSQLAgentCmdExec',
@command=N'Profiler -i MyTrackTemplate -o C:\Temp\MyTrackResults.etl',
-- 注意这只是一个通用命令,实际路径需要替换
@on_success_action=N'NO ACTION',
@retry_attempts=0,
@retry_interval=-1;
-- 运行任务
EXEC sp_start_job N'MyTrackJob';
```
阅读全文