问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用SQL Server 跟踪数据库变化

发布网友 发布时间:2022-04-26 10:53

我来回答

2个回答

懂视网 时间:2022-05-02 14:08

sp_configure ‘show advanced options‘ , 1 ; go reconfigure; go exec sp_configure ‘default trace enabled‘ , 1 ; go reconfigure; go

如果默认追踪已经启用,可以重新配置禁用默认追踪:

exec sp_configure ‘default trace enabled‘ , 0 ;
go
reconfigure;
go

exec sp_configure ‘show advanced options‘ , 0 ;
go
reconfigure;
go

三,查看默认追踪的信息

默认追踪记录的数据存储在文件中,可以从系统视图 sys.traces查看文件的路径,文件的大小(Size)和文件的更新方式等信息,追踪文件默认的扩展名是 .trc。

select id
 ,iif(status=1,‘running‘,‘stopped‘) as status
 ,path
 ,max_size
 ,start_time
 ,stop_time
 ,event_count
 ,max_files
 ,is_rowset
 ,is_rollover
 ,is_shutdown
 ,is_default
 ,buffer_count
 ,buffer_size as each_buffer_size
from sys.traces
where id=1

默认追踪有5个跟踪文件,每一个文件的最大size默认是20MB,SQL Server负责维护这5个文件,当实例重启的时候或者到达文件Size最大值的时候,SQL Server创建新的文件,将最早的跟踪文件删除,依次滚动(Rollover)更新。

四,查看追踪文件的内容

函数sys.fn_trace_gettable,用于从追踪文件中读取数据,以关系表的格式显式:

sys.fn_trace_gettable ( ‘filename‘ , number_files )

参数filename:用于指定追踪文件的名称,其值可以从系统视图sys.traces 中的path获取;

参数number_files:如果number_files 被指定为default,函数读取所有的滚动文件。

函数返回的是关系表,有效字段是:追踪关联的事件绑定的字段,

select * 
from sys.fn_trace_gettable(N‘C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLLoglog_4.trc‘,default)

五,查看默认追踪记录的事件列表

函数fn_trace_geteventinfo(trace_id)返回追踪关联的事件列表,使用该函数可以查看默认追踪记录的事件和事件的特定字段:

select categ.name as category,
 te.trace_event_id as event_id, 
 te.name as event_name,
 tc.trace_column_id as event_column_id,
 tc.name as column_name,
 tc.type_name as column_type
from sys.fn_trace_geteventinfo(1) as gei
inner join sys.trace_columns tc 
 on gei.columnid=tc.trace_column_id
inner join sys.trace_events te 
 on gei.eventid=te.trace_event_id
inner join sys.trace_categories categ
 on te.category_id=categ.category_id
order by category,event_id,event_column_id

六,查看事件和Category

Category用于组织事件(Event),在SQL Server 2012中,共有21个Category,180个Event,每个Event属于唯一的一个Category。

select tc.name as category,
 te.trace_event_id as event_id,
 te.name as event_name
from sys.trace_categories tc 
inner join sys.trace_events te 
 on tc.category_id=te.category_id
order by category,event_id

七,查看事件绑定的字段

在SQL Server 2012中,事件共有66个字段,但不是每个Event都能绑定所有的66个字段,每个Event能够绑定的字段是固定的,系统预先设置,用户不能修改,视图 sys.trace_event_bindings 用于显示每个事件绑定的字段。

select te.trace_event_id as event_id, 
 te.name as event_name,
 tc.trace_column_id as column_id,
 tc.name as column_name,
 tc.type_name as column_type
from sys.trace_event_bindings teb 
inner join sys.trace_columns tc 
 on teb.trace_column_id=tc.trace_column_id
inner join sys.trace_events te 
 on teb.trace_event_id=te.trace_event_id
order by event_id,column_id

八,使用SQL Server Profiler创建SQL Trace

在创建SQL Trace时,可以使用系统提供的存储过程来实现,但是,创建的过程繁琐,不直观。大家知道,SQL Server Profiler是一个可视化用于查看数据库活动的工具,但是,它也是一个用于创建SQL Trace的工具。使用SQL Server Profiler创建SQL Trace的过程十分简单,选择相应的事件和事件的字段之后,导出SQL Trace  的定义即可。

创建SQL Trace之后,点击File->Export->Scipt Trace Definition,就能把SQL Server Profiler用于创建SQL Trace的脚本代码导出。

技术分享图片

导出的脚本如下,不能直接使用,必须修改一处代码:在创建Trace时,指定存储追踪数据的File 或 Table,仅此而已。

技术分享图片
-- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 5

-- Client side File and Table cannot be scripted
exec @rc = sp_trace_create @TraceID output, 0, N‘InsertFileNameHere‘, @maxfilesize, NULL 
if (@rc != 0) goto error

-- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 14, 1, @on
exec sp_trace_setevent @TraceID, 14, 9, @on

--delete many commands here ---

-- Set the Filters
declare @intfilter int
declare @bigintfilter bigint
exec sp_trace_setfilter @TraceID, 1, 0, 6, N‘%drop%‘

-- Set the trace status to start
exec sp_trace_setstatus @TraceID, 1

-- display trace id for future references
select TraceID=@TraceID
goto finish

error: 
select ErrorCode=@rc

finish: 
go
View Code

 

注:SQL Trace是被扩展事件取代的功能,在后续的版本中将会被移除,建议在以后的开发中使用扩展事件。

 

参考文档:

SQL Trace

Server-wide Configuration Catalog Views (Transact-SQL)

System Trace Functions

SQL Server 默认跟踪(Default Trace)

SQL Server中关于跟踪(Trace)那点事

SQL追踪

标签:style   view   事件   nsa   ide   export   data   exe   tle   

热心网友 时间:2022-05-02 11:16

1、找到SQL Server Profiler并登录

位置:单击开始--程序--Microsoft SQL Server--性能工具--SQL Server Profiler


或者登录后在下图的位置寻找:


2、然后,进入下面的界面:


输入相关信息,单击连接进入下一个界面。

3、如下图所示界面:


4、关键点在“事件选择部分”,如下图:

小注:

要注意“列筛选器”的使用!

我们可以对统计的字段进行筛选,单击任意一个列标题可以查看列的说明如下图:


详解:

需要过滤具体的列名值,则选择对应的列,在右边树形框录入具体的值,并必须选择排除不包含值的行哈。

各个选项的具体含义,如下:

TextDate            依赖于跟踪中捕获的事件类的文本值;

ApplicationName  创建 SQL Server 连接的客户端应用程序的名称。此列由该应用程序传递的值填充,而不是由所显示的程序名填充的;

NTusername        Windows 用户名。

LoginName           用户的登录名(SQL Server 安全登录或 Windows 登录凭据,格式为“域\用户名”)

CPU                    事件使用的 CPU 时间(毫秒)。

Reads                 由服务器代表事件读取逻辑磁盘的次数。

Writes                由服务器代表事件写入物理磁盘的次数。

Duration             事件占用的时间。尽管服务器以微秒计算持续时间,SQL Server Profiler 却能够以毫秒为单位显示该值,具体情况取决于“工具”>“选项”对话框中的设置

ClientProcessID   调用 SQL Server 的应用程序的进程 ID。

SPID                  SQL Server 为客户端的相关进程分配的服务器进程 ID。

StratTime           事件(如果可用)的启动时间。

EndTime             事件结束的时间。对指示事件开始的事件类(例如 SQL:BatchStarting 或 SP:Starting)将不填充此列。

BinaryData          依赖于跟踪中捕获的事件类的二进制值。

然后,单击运行即可!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
巧师傅榴莲千层蛋糕(6寸500g)-适用对象 巧师傅 榴莲千层蛋糕 6寸 500g-马来西亚苏丹王榴莲肉,口感鲜甜软糯_百... 巧师傅榴莲千层蛋糕500g-精选苏丹王榴莲果肉,口感浓郁 巧师傅苏丹王榴莲千层蛋糕-适用对象 阿卡丽和卡特琳娜,哪一个比较好。 英雄联盟阿卡丽和卡特琳纳哪个比较好…为什么? 求大神分析 阿卡丽和卡特琳娜单挑 谁会赢? 河北5+3临床医学有哪些学校 ...块数比20多,比40少,5块5块地数正好数完,2块2块地数也正好数完?_百... ...比20小,它3个3个数或4个4个数都正好数完,这个数是多少..._百度知... oracle数据库,如何跟踪语句? Oracle 数据库如何跟踪SQL语句 "我的梦想是周游世界"用日语可以这么说吗? 暖暖环游世界的芙蕾雅之梦怎么获得 环游世界是一个理想吗 暖暖环游世界青叶的梦套装怎么得 如何才能完成我的梦——环游世界 环球世界需要多少钱? 暖暖环游世界的梦之阁里怎样抽到30个卡片 想要环游世界,又想找份好工作,去应聘机长是否是最合适的选择? 梦见和几个朋友飞到天上,底下就是海,能看到下面的一切,环游世界,而且还感觉以前做过相似的梦,这有什 怎么样才能实现自己环游世界的梦想呢 你觉得一个普通人要如何实现环游世界的梦想? 为什么那么多人有环游世界的梦想 怎样才能够实现环游世界的梦想? 如何实现环游世界的梦想 77岁阿姨走遍七大洲,你有环游世界的梦想吗? 为什么好多人的梦想是环游世界?环游世界有什么好处? 一个普通人,怎样才能实现自己环游世界的梦想? 你有过环游世界的梦想吗? mysql 怎样进行数据库跟踪 Oracle数据库跟踪 oracle 10g 中怎么跟踪SQL语句呀 产品对数据库的操作,sql语句在哪里能够... 如何跟踪SQL SERVER 正在执行的语句 MySQL 如何追踪sql语句的执行 oracle怎样跟踪一条sql语句的执行过程? mssql2012或navicat10 数据库跟踪 数据库跟踪audit loeout什么意思 sql语法的跟踪 SQL Server Profiler 2008 怎么追踪特定种类语句如 insert,update,delete,能指定某个数据追踪吗 有什么工具可以跟踪完整的sql语句 vivo手机微信小视频发不出去怎么办? SQL Server Profiler怎么跟踪指定数据库标识ID sql数据库追踪问题 如何打开oracle的sql后台跟踪功能 vivox6plus微信发不了小视频怎么办 vivox5max为什么微信发不了视频啊 vivo xplay5微信发不出去视频和图片是怎么回事 vivo手机微信发不了语音和视频还有图片。好友发的 视频和照片也看不了 vivo x5max微信发不了小视频