热门搜索 :
考研考公
您的当前位置:首页正文

SQL Server 脚本跟踪

2023-11-10 来源:东饰资讯网

1.查询 DataBasesID

select db_id(‘regdatas‘)

技术分享

2.获取进程ID

技术分享

3.过滤定位

技术分享

SQL Server 脚本跟踪

标签:

小编还为您整理了以下内容,可能对您也有帮助:

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

sp_configure ‘show advanced options‘ , 1 ;goreconfigure;goexec sp_configure ‘default trace enabled‘ , 1 ;goreconfigure;go

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

exec sp_configure ‘default trace enabled‘ , 0 ;goreconfigure;goexec sp_configure ‘show advanced options‘ , 0 ;goreconfigure;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_sizefrom sys.traceswhere 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_typefrom sys.fn_trace_geteventinfo(1) as geiinner join sys.trace_columns tc on gei.columnid=tc.trace_column_idinner join sys.trace_events te on gei.eventid=te.trace_event_idinner join sys.trace_categories categ on te.category_id=categ.category_idorder 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_namefrom sys.trace_categories tc inner join sys.trace_events te on tc.category_id=te.category_idorder 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_typefrom sys.trace_event_bindings teb inner join sys.trace_columns tc on teb.trace_column_id=tc.trace_column_idinner join sys.trace_events te on teb.trace_event_id=te.trace_event_idorder 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 Queuedeclare @rc intdeclare @TraceID intdeclare @maxfilesize bigintset @maxfilesize = 5-- Client side File and Table cannot be scriptedexec @rc = sp_trace_create @TraceID output, 0, N‘InsertFileNameHere‘, @maxfilesize, NULL if (@rc != 0) goto error-- Set the eventsdeclare @on bitset @on = 1exec sp_trace_setevent @TraceID, 14, 1, @onexec sp_trace_setevent @TraceID, 14, 9, @on--delete many commands here ----- Set the Filtersdeclare @intfilter intdeclare @bigintfilter bigintexec sp_trace_setfilter @TraceID, 1, 0, 6, N‘%drop%‘-- Set the trace status to startexec sp_trace_setstatus @TraceID, 1-- display trace id for future referencesselect TraceID=@TraceIDgoto finisherror: select ErrorCode=@rcfinish: 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   

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

sp_configure ‘show advanced options‘ , 1 ;goreconfigure;goexec sp_configure ‘default trace enabled‘ , 1 ;goreconfigure;go

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

exec sp_configure ‘default trace enabled‘ , 0 ;goreconfigure;goexec sp_configure ‘show advanced options‘ , 0 ;goreconfigure;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_sizefrom sys.traceswhere 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_typefrom sys.fn_trace_geteventinfo(1) as geiinner join sys.trace_columns tc on gei.columnid=tc.trace_column_idinner join sys.trace_events te on gei.eventid=te.trace_event_idinner join sys.trace_categories categ on te.category_id=categ.category_idorder 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_namefrom sys.trace_categories tc inner join sys.trace_events te on tc.category_id=te.category_idorder 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_typefrom sys.trace_event_bindings teb inner join sys.trace_columns tc on teb.trace_column_id=tc.trace_column_idinner join sys.trace_events te on teb.trace_event_id=te.trace_event_idorder 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 Queuedeclare @rc intdeclare @TraceID intdeclare @maxfilesize bigintset @maxfilesize = 5-- Client side File and Table cannot be scriptedexec @rc = sp_trace_create @TraceID output, 0, N‘InsertFileNameHere‘, @maxfilesize, NULL if (@rc != 0) goto error-- Set the eventsdeclare @on bitset @on = 1exec sp_trace_setevent @TraceID, 14, 1, @onexec sp_trace_setevent @TraceID, 14, 9, @on--delete many commands here ----- Set the Filtersdeclare @intfilter intdeclare @bigintfilter bigintexec sp_trace_setfilter @TraceID, 1, 0, 6, N‘%drop%‘-- Set the trace status to startexec sp_trace_setstatus @TraceID, 1-- display trace id for future referencesselect TraceID=@TraceIDgoto finisherror: select ErrorCode=@rcfinish: 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   

如何跟踪SQL SERVER 正在执行的语句

打开Microsoft SQL Server Management Studio , 在菜单栏有个工具(Tool), 里面有个事件追踪(SQL Server Profiler)。

打开sql server profiler, 连接数据库。弹出Trace Properties(跟踪属性), 选择事件(Events Selection),右下角选择Show All Columns(选择所有列), 点击列过滤(Columns Filters)按钮。在里面就有HostName 设置电脑的主机名.

请教:如何SQL Server用事件探查器是只跟踪某个表某个字段的操作。

创建跟踪的步骤:

1. 首先从“开始”菜单指向“所有程序”,打开SQL Server Management Studio。

2. 从“工具”菜单选择“事件探查器”。

3. 当“事件探查器”主界面打开后,从“文件”菜单选择“新跟踪”。

4. 这时候,SQL Server事件探查器会提示你连接到你想要探查跟踪的 SQL Server实例。提供连接所需的详细信息,点击“连接”按钮继续。

5. 在“跟踪名称”文本框中输入你想要为这个跟踪创建的跟踪名称。

6. 从“模板名称”下拉菜单为你创建的跟踪选择一个模板。(下文的提示会一些常用跟踪模板的用途的信息)。

7. 选择“保存到文件”选项,将你创建的跟踪保存到本地硬盘的某个文件中。点击复选框后,在弹出的“存储为”窗口输入一个文件名及其位置。

8. 点击“事件”选项卡,查看你在创建的跟踪计划里想要跟踪监测的事件。根据你选择的模板,系统会自动选择一些事件,不过你可以修改这些默认的选项设置。通过点击“显示全部事件”和“显示全部列”复选框来查看其他的选项。

9. 点击“运行”按钮开始进行跟踪。SQL Server就会开始创建该跟踪,并在保存的文件中显示跟踪的详细信息。运行完毕后,从“文件”菜单选择“停止跟踪”。

提示:

1. 跟踪模板选项所提供“标准”(Standard)模板用于捕获关于 SQL Server连接、存储过程和Transact-SQL语句的大量信息。

2. “优化”(Tuning)模板用于捕获可以被数据库引擎优化顾问用来优化SQL Server性能的信息。

3. “TSQL_Replay”模板用来捕获将来重新运行这个跟踪所需的所有Transact-SQL语句的详细信息。

Top