SQL TRACE

  在 SQL 跟踪中,如果事件是在跟踪定义中列出的事件类的实例,则收集这些事件。可以将这些事件从跟踪中筛选出来或为其目标进行排队。目标可以是文件或 SQL Server 管理对象 (SMO),它可以使用管理 SQL Server 的应用程序中的跟踪信息。

SQL 跟踪的优点

  Microsoft SQL Server 提供 Transact-SQL 系统存储过程来创建对 SQL Server 数据库引擎实例的跟踪。可以不使用 SQL Server Profiler,而使用这些系统存储过程从您自己的应用程序中手动创建跟踪。这样,您就可以针对企业的特定需求编写自定义应用程序。

SQL 跟踪结构

  事件源可以是生成跟踪事件(例如 Transact-SQL 批处理)或 SQL Server 事件(例如死锁)的任何源。有关事件的详细信息,请参阅 SQL Server 事件类参考。事件发生后,如果该事件类已经包含在跟踪定义中,则跟踪将收集该事件信息。如果已经在跟踪定义中为该事件类定义筛选器,则将应用这些筛选器并将跟踪事件信息传递到队列。从队列中,跟踪信息或者被写入文件,或者由应用程序(例如 SQL Server Profiler)中的 SMO 使用。以下关系图显示了在跟踪期间 SQL 跟踪如何收集事件。

  

使用数据列描述返回的事件

跟踪运行时,SQL 跟踪使用跟踪输出中的数据列来描述返回的事件。下表说明了 SQL Server Profiler 数据列(这些数据列与 SQL 跟踪使用的数据列相同),并指示默认情况下选择的列。


数据列

列号 说明

ApplicationName 1

10
客户端应用程序的名称,该客户端应用程序创建了指向 SQL Server 实例的连接。此列由该应用程序传递的值填充,而不是由程序名填充的。


BigintData1

52
值 (bigint 数据类型),取决于跟踪中指定的事件类。


BigintData2

53
值 (bigint 数据类型),取决于跟踪中指定的事件类。


Binary Data

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


ClientProcessID 1

9
由主机分配给正在运行客户端应用程序的进程的 ID。如果客户端提供了客户端进程 ID,则填充此数据列。


ColumnPermissions

44
表示是否已设置了列权限。可以分析语句文本来确定各列所应用权限的情况。


CPU

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


Database ID1

3
由 USE database_name 语句指定的数据库的 ID;如果未对给定实例发出 USE database_name语句,则为默认数据库的 ID。如果在跟踪中捕获 ServerName 数据列而且服务器可用,则 SQL Server Profiler 将显示数据库名。若要确定数据库的值,请使用 DB_ID 函数。


DatabaseName

35
正在运行用户语句的数据库的名称。


DBUserName 1

40
客户端的 SQL Server 用户名。


Duration

13
事件的持续时间(微秒)。

服务器以微秒(百万分之一秒或 10-6 秒)为单位报告事件的持续时间,以毫秒(千分之一秒或 10-3 秒)为单位报告事件使用的 CPU 时间。SQL Server Profiler 图形用户界面默认以毫秒为单位显示“持续时间”列,但是当跟踪保存到文件或数据库表中时,将以微秒为单位写入“持续时间”列值。


EndTime

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


Error

31
给定事件的错误号。通常是 sysmessages 中存储的错误号。


EventClass1

27
捕获的事件类的类型。


EventSequence

51
此事件的序列号。


EventSubClass 1

21
事件子类的类型,提供有关每个事件类的详细信息。例如,Execution Warning 事件类的事件子类值代表执行警告的类型:

1 = 查询等待。查询执行之前必须等待资源;例如,内存。

2 = 查询超时。查询等待执行所需资源时超时。对于所有事件类,均不填充此数据列。


GUID

54
依赖于跟踪中指定的事件类的 GUID 值。


FileName

36
所修改的文件的逻辑名称。


Handle

33
一个整数,ODBC、OLE DB 或 DB-Library 使用它来协调服务器的执行情况。


HostName1

8
正在运行客户端程序的计算机的名称。如果客户端提供了主机名,则填充此数据列。若要确定主机名,请使用 HOST_NAME 函数。


IndexID

24
受事件影响的对象的索引 ID。若要确定对象的索引 ID,请参见 sysindexes 系统表的 indid 列。


IntegerData

25
跟踪中捕获的与事件类对应的整数值。


IntegerData2

55
跟踪中捕获的与事件类对应的整数值。


IsSystem

60
指示该事件发生在系统进程还是用户进程上:

1 = 系统

0 = 用户


LineNumber

5
包含存在错误的行的行号。对于涉及 Transact-SQL 语句的事件(如 SP:StmtStarting),LineNumber 包含存储过程或批处理中语句的行号。


LinkedServerName

45
链接服务器的名称。


LoginName

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


LoginSid 1

41
已登录的用户的安全标识符 (SID)。您可以在 master 数据库的 sys.server_principals 视图中找到此信息。服务器中的每个登录名都具有唯一的 ID。


MethodName

47
OLEDB 方法的名称。


Mode

32
一个整数,各种事件都使用它来描述事件要请求或已接收的状态。


NestLevel

29
一个整数,表示 @@NESTLEVEL 返回的数据。


NTDomainName 1

7
用户所属的 Microsoft Windows 域。


NTUserName 1

6
Windows 用户名。


ObjectID

22
系统分配的对象 ID。


ObjectID2

56
相关对象或实体(如果存在)的 ID。


ObjectName

34
被引用对象的名称。


ObjectType2

28
表示事件中涉及的对象类型的值。该值对应于 sysobjects 中的 type 列。


Offset

61
语句在存储过程或批处理中的起始偏移量。


OwnerID

58
仅限锁事件。拥有锁的对象的类型。


OwnerName

37
对象所有者的数据库用户名。


ParentName

59
该对象所在的架构的名称。


Permissions

19
表示所检查的权限类型的整型值。值为:

1 = SELECT ALL

2 = UPDATE ALL

= REFERENCES ALL

8 = INSERT

16 = DELETE

32 = EXECUTE(仅过程)

4096 = SELECT ANY(至少一列)

8192 = UPDATE ANY

16384 = REFERENCES ANY


ProviderName

46
OLEDB 访问接口的名称。


Reads

16
由服务器代表事件读取逻辑磁盘的次数。这些读取操作数包含在语句执行期间读取表和缓冲区的次数。


RequestID

49
包含该语句的请求的 ID。


RoleName

38
正在启用的应用程序角色名。


RowCounts

48
批处理中的行数。


ServerName 1

26
正在跟踪的 SQL Server 实例的名称。


SessionLoginName

64
发起会话的用户的登录名。例如,如果您使用 Login1 连接到 SQL Server 并以 Login2 身份执行语句,则SessionLoginName 将显示 Login1,而 LoginName 将显示 Login2。此数据列将同时显示 SQL Server 登录名和 Windows 登录名。


Severity

20
异常错误事件的严重级别。


SourceDatabaseID

62
存在该对象的源的数据库 ID。


SPID

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


SqlHandle

63
基于即席查询文本或 SQL 对象的数据库和对象 ID 的 64 位哈希运算。可以将该值传递到sys.dm_exec_sql_text() 以检索关联的 SQL 文本。


StartTime 1

14
事件(如果有)的开始时间。


状态

30
错误状态代码。


Success

23
表示事件是否成功。值包括:

1 = 成功。

0 = 失败

例如,1 表示权限检查成功,而 0 表示权限检查失败。


TargetLoginName

42
如果是针对登录的操作(例如,添加新的登录),这是所针对登录的名称。


TargetLoginSid

43
如果是针对登录的操作(例如,添加新的登录),这是所针对登录的 SID。


TargetUserName

39
如果是针对某个数据库用户的操作(例如,授予用户权限),这是该用户的名称。


TextData

1
依赖于跟踪中捕获的事件类的文本值。但是,如果跟踪参数化查询,则不以 TextData 列中的数据值显示变量。


Transaction ID

4
系统为事务分配的 ID。

类型 57
跟踪中捕获的与事件类对应的整数值。


Writes

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


XactSequence

50
用于说明当前事务的标记。

  1 默认情况下,对于所有事件,均填充这些数据列。

  2 有关 ObjectType 数据列的详细信息,请参阅ObjectType 跟踪事件列

  

SQL 跟踪任务


任务说明

主题

介绍如何使用 TRANSACT-SQL 存储过程创建和运行跟踪。


使用 Transact-SQL 存储过程创建和运行跟踪


介绍如何在 SQL Server 数据库引擎实例上使用存储过程创建手动跟踪。


使用存储过程创建手动跟踪


介绍如何将跟踪结果保存到跟踪结果所写入的文件。


将跟踪结果保存到文件


介绍如何使用 temp 目录中的空间来提高访问跟踪数据的性能。


改进对跟踪数据的访问


介绍如何使用存储过程创建跟踪。


创建跟踪 (Transact-SQL)


介绍如何使用存储过程创建只检索有关所需跟踪事件信息的筛选器。


设置跟踪筛选器 (Transact-SQL)


介绍如何使用存储过程修改现有跟踪。


修改现有跟踪 (Transact-SQL)


介绍如何使用内置函数查看保存的跟踪。


查看保存的跟踪 (Transact-SQL)


介绍如何使用内置函数查看跟踪筛选器信息。


查看筛选器信息 (Transact-SQL)


介绍如何使用存储过程删除跟踪。


删除跟踪 (Transact-SQL)


介绍如何将跟踪引起的性能损失降到最低。


优化 SQL 跟踪


介绍如何筛选跟踪以将跟踪过程中的开销降到最低。


筛选跟踪


介绍如何将跟踪收集的数据量降至最低。


限制跟踪文件和表的大小


介绍在 Microsoft SQL Server 中计划跟踪的两种方法。


安排跟踪

时间: 2024-10-06 11:25:52

SQL TRACE的相关文章

SQL Server Extended Events 进阶 1:从SQL Trace 到Extended Events

http://www.sqlservercentral.com/articles/Stairway+Series/134869/ SQL server 2008 中引入了Extended Events 用以替换SQL Trace. 然而在第一个版本中并没有为用户提供UI,因此使用Extended Events并不是很方便.SQL Server 2012及时修正了这一点,将UI管理工具集成在SSMS中, 这就意味着我们不需要再为了查询Event XML而学习使用XQuery了.因此跟多的DBA和开

怎样收集EBS 各个模块的 Log, SQL trace, 以及FRD log

我平时接触到的EBS 模块主要是下面几个: PO, INV, OM. 因此也经常需要收集相关的log 信息. 如果界面上报错了, 可以很容易从log 里面看到是哪里的代码执行报错. 这篇博客总结了收集上述几个log 的方法, 和sql trace 以及frd log. 1. OM log 这个主要记录OM 模块的日志. OM 模块的代码文件以OE 开头, 文件里面有记录日志的语句: oe_debug_pub.add(). 写在这个语句的内容会被写到日志中. 设置profile OM: Debug

创建SQL Trace

Trace是轻量级的追踪工具,几乎对系统没有任何副作用,开启Trace,经常能够帮助DBA追踪到一些非常有用的信息.Trace出现的比较早,MS推出更强大的Extended Events来取代Trace. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify appl

PLSQL_性能优化效能跟踪工具SQL Trace分析(案例)

2014-06-25 BaoXinjian 一.摘要 SQL TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL TRACE是非常常用的方法.一般,一次跟踪可以分为以下几步:1.界定需要跟踪的目标范围,并使用适当的命令启用所需跟踪.2.经过一段时间后,停止跟踪.此时应该产生了一个跟踪结果文件.3.找到跟踪文件,并对其进行格式化,然后阅读或分析. 另文已介绍了其他的跟踪工具DBMS_PROFILER, Form Trace, Re

Oracle sql trace

一.SQL_TRACE说明 1.1.在全局启用 在参数文件(pfile/spfile)中指定:sql_trace =true 1.2.在当前session级设置 启用当前session的跟踪: alter session set sql_trace=true; 结束跟踪: alter session set sql_trace=false; 1.3.跟踪其他用户进程 跟踪其他用户的进程,可以通过Oracle提供的系统包DBMS_SYSTEM. SET_SQL_TRACE_IN_SESSION来完

SQL TRACE过程中的事件号详细解释

我们定位数据库性能问题时经常会用到Trace跟踪,下面列举了一下Trace跟踪事件号的含义,方便查看 下表列出了可以在跟踪中添加或删除的事件. 事件号 事件名称 说明 0-9 保留 保留 10 RPC:Completed 在完成了远程过程调用 (RPC) 时发生. 11 RPC:Starting 在启动了 RPC 时发生. 12 SQL:BatchCompleted 在完成了 Transact-SQL 批处理时发生. 13 SQL:BatchStarting 在启动了 Transact-SQL

Oracle SQL Trace 和 10046 事件

一. SQL_TRACE 当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL执行的整个过程输出到一个trace文件中,我们可以读这个trace 文件来了解在这个SQL执行过程中Oracle 都做了哪些操作. 可以通过sql命令启动SQL_TRACE,或者在初始化参数里面. SQL>alter session set sql_trace=true; 或者 SQL> alte

Oracle sql trace用法

sql_trace是oracle提供的一个非常好的跟踪工具,主要用来检查数据库的异常情况,通过跟踪数据库的活动,找到有问题的语句. 一.概述:    SQL_TRACE是Oracle的一个非常强大的工具.打开SQL_TRACE就可以逐步捕获任何一个会话的数据库活动,或者捕获整个数据库的活动,并将数据库活动记录成跟踪文件.每次使用完之后需要关闭跟踪,否则会降低系统的性能.    SQL_TRACE可以帮助诊断许多问题,其中包括: 二.用法:   1.文件跟踪的分类:      跟踪DBA可以采用两

SQL Trace 分析

select * into samplefrom tn_trace_gettable('c:\sample\a.trc', default)where eventcalss in (10, 12)--10:RPC:Completed 在完成了远程过程调用(RPC)时发送.一般是一些存储过程调用.--12:SQL:BatchCompleted在完成了Transact-SQL批处理时发生. (1).找到是哪台客户端服务器上的哪个应用发过来的语句从整体上讲数据库引起的“read”最多:select d