• 相关软件
    >sp_trace_setevent 创建者:webmaster 更新时间:2006-02-16 15:51

    针对某个跟踪添加或删除一个事件或事件列。只有在已停止的现有跟踪(status 为 0)上才能执行 sp_trace_setevent。如果在不存在或其 status 不为 0 的跟踪上执行该存储过程,则 Microsoft® SQL Server™ 2000 将返回错误。



    语法


    sp_trace_setevent [ @traceid = ] trace_id

        , [ @eventid = ] event_id

        , [ @columnid = ] column_id

        , [ @on = ] on



    参数


    [ @traceid = ] trace_id



    是要修改的跟踪 ID。trace_id 的数据类型为 int,没有默认设置。用户使用 trace_id 值识别、修改和控制跟踪。



    [ @eventid = ] event_id



    是要打开的事件 ID。event_id 的数据类型为 int,没有默认设置。



    下表列出了可以添加到跟踪或从跟踪中删除的事件。





























































































































































































































































































































































































































































































































































































    事件号

    事件名称


    描述
    0-9保留 
    10RPC:Completed在已完成远程过程调用 (RPC) 后发生。
    11RPC:Starting在 RPC 已启动后发生。
    12SQL:BatchCompleted在已完成 Transact-SQL 批处理后发生。
    13SQL:BatchStarting在 Transact-SQL 批处理已启动后发生。
    14Login在用户成功登录到 SQL Server 时发生。
    15Logout在用户注销 SQL Server 时发生。
    16Attention在提示事件(如客户端中断请求或客户端连接中断)发生时发生。
    17ExistingConnection在检测所有用户在启动跟踪前连接到 SQL Server 的活动。
    18ServiceControl在修改过 SQL Server 服务状态时发生。
    19DTCTransaction跟踪 Microsoft 分布式事务处理协调器 (MS DTC) 在两个或更多的数据库之间协调的事务。
    20Login Failed表明试图从客户机登录到 SQL Server 失败。
    21EventLog表示已将事件记录到 Microsoft Windows NT® 应用程序日志中。
    22ErrorLog表示已将错误事件记录到 SQL Server 错误日志中。
    23Lock:Released表示已释放一个资源锁(如页)。
    24Lock:Acquired表示获取了像数据页这样的资源锁。
    25Lock:Deadlock表明由于两个并发事务都试图获得另一事务所拥有的不兼容的资源锁而已互相锁死。
    26Lock:Cancel表示获取的资源锁已被取消(例如,由于死锁的原因)。
    27Lock:Timeout表示由于其它事务控制着所需资源的分块锁而使对资源锁(如页)的请求超时。超时由 @@LOCK_TIMEOUT 函数确定,并可用 SET LOCK_TIMEOUT 语句设置。
    28DOP Event在执行 SELECT、INSERT 或 UPDATE 语句之前发生。
    29-31保留改为使用事件 28。
    32保留 
    33Exception表明 SQL Server 中发生一个异常错误。
    34SP:CacheMiss表明未在过程高速缓存中找到某存储过程的时间。
    35SP:CacheInsert表明将某项目插入到过程高速缓存中的时间。
    36SP:CacheRemove表明将某项目从过程高速缓存中删除的时间。
    37SP:Recompile表示已重新编译某个存储过程。
    38SP:CacheHit表示在过程高速缓存中找到某存储过程的时间。
    39SP:ExecContextHit表示已在过程高速缓存内找到某存储过程的执行版本。
    40SQL:StmtStarting在已启动 Transact-SQL 语句时发生。
    41SQL:StmtCompleted在已完成 Transact-SQL 语句后发生。
    42SP:Starting表明存储过程已被启动的时间。
    43SP:Completed表明存储过程已完成的时间。
    44保留改为使用事件 40。
    45保留改为使用事件 41。
    46Object: Created表示已经创建一个对象,如 CREATE INDEX、CREATE TABLE 和 CREATE DATABASE 这样的语句。
    47Object: Deleted表示已经删除一个对象,如在 DROP INDEX 和 DROP TABLE 语句中。
    48保留 
    49保留 
    50SQL Transaction跟踪 Transact-SQL BEGIN、COMMIT、SAVE 和 ROLLBACK TRANSACTION 语句。
    51Scan:Started表明已启动扫描一个表或索引的时间。
    52Scan:Stopped表明已停止扫描一个表或索引的时间。
    53CursorOpen表示 ODBC、OLE DB 或 DB-Library 在 Transact-SQL 语句上打开游标的时间。
    54Transaction Log在事务被写入事务日志时进行跟踪。
    55Hash Warning表示未在缓冲分区进行的某一哈希操作(例如,哈希联接、哈希聚合、哈希 union 运算、哈希非重复)已回复为替换计划。这可由于递归深度、数据扭曲、跟踪标记或位计数而发生。
    56-57保留 
    58Auto Update Stats表示已自动更新索引统计。
    59Lock:Deadlock Chain为每个导致死锁的事件而产生。
    60Lock:Escalation表示较细粒度的锁已转换为较粗粒度的锁(如由行锁升级或转换为页锁)。
    61OLE DB Errors表明发生了一个 OLE DB 错误。
    62-66保留 
    67Execution Warnings表明在执行 SQL Server 语句或存储过程期间发生的所有警告。
    68Execution Plan显示正在执行的 Transact-SQL 语句的计划树。
    69Sort Warnings表示不符合内存要求的排序操作。不包括与创建索引有关的排序操作;只包括某查询内的排序操作(如 SELECT 语句中使用的 ORDER BY 子句)。
    70CursorPrepare表示 ODBC、OLE DB 或 DB-Library 准备好 Transact-SQL 语句中的游标以便使用的时间。
    71Prepare SQLODBC、OLE DB 或 DB-Library 已准备一个或多个 Transact-SQL 语句供使用。
    72Exec Prepared SQLODBC、OLE DB 或 DB-Library 已执行一个或多个准备的 Transact-SQL 语句。
    73Unprepare SQLODBC、OLE DB 或 DB-Library 已撤消准备(删除)准备好的 Transact-SQL 语句。
    74CursorExecute执行先前由 ODBC、OLE DB 或 DB-Library 在 Transact-SQL 语句上准备的游标。
    75CursorRecompile由 ODBC 或 DB-Library 在 Transact-SQL 语句上打开的游标已直接重新编译或由于架构更改而重新编译。

    为 ANSI 和非 ANSI 游标触发。


    76CursorImplicitConversionTransact-SQL 语句上的游标由 SQL Server 从一种类型转换到另一种类型。

    为 ANSI 和非 ANSI 游标触发。


    77CursorUnprepareODBC、OLE DB 或 DB-Library 撤消准备(删除)在 Transact-SQL 上准备好的游标。
    78CursorClose关闭先前由 ODBC、OLE DB 或 DB-Library 在 Transact-SQL 语句上打开的游标。
    79Missing Column Statistics在优化器中可能会有用的列统计不可用。
    80Missing Join Predicate正在执行没有联接谓词的查询。这可能会导致查询长时间运行。
    81Server Memory ChangeMicrosoft SQL Server 内存的使用已增加或减少 1 MB 或最大服务器内存的 5%(两者中较大的)。
    82-91User Configurable (0 -9)用户定义的事件数据。
    92Data File Auto Grow表示服务器已自动扩展某日志文件。
    93Log File Auto Grow表示服务器已自动扩展某日志文件。
    94Data File Auto Shrink表示服务器已自动收缩某数据文件。
    95Log File Auto Shrink表示服务器已自动收缩某日志文件。
    96Show Plan Text在查询优化器中显示 SQL 语句的查询计划树。
    97Show Plan ALL用已执行的 SQL 语句的完整的编译时细节显示查询计划。
    98Show Plan Statistics执行 SQL 语句的完整的编译时细节来显示查询计划用已执行的 SQL 语句的完整的运行时细节显示查询计划。
    99保留 
    100RPC Output Parameter生成每个 RPC 的参数输出值。
    101保留 
    102Audit Statement GDRSQL Server 中的任何用户每次发出用于语句权限的 GRANT、DENY、REVOKE 时都发生。
    103Audit Object GDR在 SQL Server 中的任何用户每次发出用于对象权限的 GRANT、DENY、REVOKE 时都发生。
    104Audit Add/Drop Login在添加或删除 SQL Server 登录时发生;用于 sp_addloginsp_droplogin
    105Audit Login GDR在添加或删除 Microsoft Windows® 登录权限时发生;用于 sp_grantloginsp_revokeloginsp_denylogin
    106Audit Login Change Property在修改除密码之外的登录属性时发生;用于 sp_defaultdbsp_defaultlanguage
    107Audit Login Change Password在更改 SQL Server 登录密码时发生。

    不记录密码。


    108Audit Add Login to Server Role在从固定服务器角色添加或删除登录时发生;用于 sp_addsrvrolemembersp_dropsrvrolemember
    109Audit Add DB User在添加或删除作为某个数据库的数据库用户(Windows 或 SQL Server)的登录时发生;用于 sp_grantdbaccesssp_revokedbaccesssp_addusersp_dropuser
    110Audit Add Member to DB在将某登录作为数据库的固定数据库用户或用户定义数据库用户进行添加或删除时发生;用于 sp_addrolemembersp_droprolemembersp_changegroup
    111Audit Add/Drop Role在将某登录作为数据库的数据库用户进行添加或删除时发生;用于 sp_addrolesp_droprole
    112App Role Pass Change在更改应用程序角色的密码时发生。
    113Audit Statement Permission在使用语句权限(如 CREATE TABLE)时发生。
    114Audit Object Permission在成功地或不成功地使用对象权限(如 SELECT)时发生。
    115Audit Backup/Restore在发出 BACKUP 或 RESTORE 命令时发生。
    116Audit DBCC在发出 DBCC 命令时发生。
    117Audit Change Audit在进行审核跟踪修改时发生。
    118Audit Object Derived Permission在发出 CREATE、ALTER 和 DROP 对象命令时发生。



    [ @columnid = ] column_id



    是要为事件添加的列 ID。column_id 的数据类型为 int,没有默认设置。



    下表列出了可以为事件添加的列。

















































































































































































































































































    列号列名描述
    1TextData与跟踪内捕获的事件类相关的文本值。
    2BinaryData与在跟踪中捕获的事件类相关的二进制值。
    3DatabaseIDUSE database 语句所指定的数据库 ID,如果没有对给定的连接发出 USE database 语句,则是默认数据库 ID。

    可以使用 DB_ID 函数确定数据库的值。


    4TransactionID系统分配的事务 ID。
    5保留 
    6NTUserNameMicrosoft Windows NT® 用户名。
    7NTDomainName用户所属的 Windows NT 域。
    8ClientHostName发起请求的客户计算机名称。
    9ClientProcessID客户端计算机分配给进程的 ID,而客户端应用程序正在该进程中运行。
    10ApplicationName创建与 SQL Server 实例的连接的客户端应用程序名。该列由应用程序传递的值填充,而不是由所显示的程序名填充。
    11SQLSecurityLoginName客户端的 SQL Server 登录名称。
    12SPIDSQL Server 指派的与客户端相关的服务器进程 ID。
    13Duration事件所花费的实耗时间总计(以毫秒为单位)。Hash Warning 事件不填充该数据列。
    14StartTime启动事件的时间(可用时)。
    15EndTime事件结束时的时间。启动事件类(如 SQL:BatchStartingSP:Starting)的该列不填充。Hash Warning 事件也不填充该列。
    16Reads服务器代表事件执行的逻辑磁盘读取数。Lock:Released 事件不填充该列。
    17Writes服务器代表事件执行的物理磁盘写入数。
    18CPU事件所使用的 CPU 时间总计(以毫秒为单位)。
    19Permissions代表权限的位图;由安全审核使用。
    20Severity异常错误的严重级别。
    21EventSubClass事件子类类型。所有事件类的该数据列均不填充。
    22ObjectID系统分配的对象 ID。
    23Success尝试使用权限成功;由审核使用。

    1 = 成功

    0 = 失败


    24IndexID受事件影响的对象上的索引 ID。若要确定对象的索引 ID,请使用 sysindexes 系统表的 indid 列。
    25IntegerData与在跟踪中捕获的事件类相关的整型值。
    26ServerName正跟踪的 SQL Server 实例名(servername 或 servername\instancename)。
    27EventClass正记录的事件类类型。
    28ObjectType对象类型(如表、函数或存储过程)。
    29NestLevel存储过程正在其上执行的嵌套级。请参见 @@NESTLEVEL
    30State发生错误时的服务器状态。
    31Error错误号。
    32Mode获取锁的锁模式。Lock:Released 事件不填充该列。
    33Handle在事件中引用的对象句柄。
    34ObjectName被访问的对象名称。
    35DatabaseNameUSE database 语句中指定的数据库名称。
    36Filename被修改的文件名的逻辑名。
    37ObjectOwner被引用对象的所有者 ID。
    38TargetRoleName语句作为目标的数据库范围角色或服务器范围角色的名称。
    39TargetUserName某个操作目标的用户名。
    40DatabaseUserName客户端的 SQL Server 数据库用户名。
    41LoginSID登录用户的安全标识号 (SID)。
    42TargetLoginName某个操作目标的登录名称。
    43TargetLoginSID是某个操作目标的登录 SID。
    44ColumnPermissionsSet列级权限状态;由安全审核使用。



    [ @on = ] on



    指定是打开事件 (ON (1)) 还是关闭事件 (OFF (0))。@on 的数据类型为 bit,没有默认设置。



    如果 on 设置为 1,且 column_id 是 NULL,则将事件设置为 ON 并清除所有列。如果 column_id 不为空,则为该事件将列设置为 ON。



    如果 on 设置为 0,且 column_id 是 NULL,则关闭事件 (OFF) 且清除所有列。如果 column_id 不为空,则关闭列 (OFF)。



    下表说明 @on@columnid 之间的交互操作。


































    @on@columnid结果
    ON (1)NULL打开事件 (ON)。

    清除所有列。


     NOT NULL为指定的事件打开列 (ON)。
    OFF (0)NULL关闭事件 (OFF)。

    清除所有列。


     NOT NULL为指定的事件关闭列 (OFF)。



    返回代码值


    下表描述在存储过程完成之后用户可能获得的代码值。






















































    返回代码描述
    0没有错误。
    1未知错误。
    2本跟踪当前正在运行。此时更改跟踪将导致错误。
    3指定的事件无效。该事件可能不存在或者它不适用于此存储过程。
    4指定的列无效。
    9指定的跟踪句柄无效。
    11指定的列在内部使用并且不能删除。
    13内存不足。在没有足够内存执行指定的操作时返回此代码。
    16该函数对此跟踪无效。



    注释


    sp_trace_setevent 是 Microsoft SQL Server 2000 存储过程,它执行以前由 SQL Server 早期版本使用的扩展存储过程执行的很多操作。使用 sp_trace_setevent 而不使用:


    • xp_trace_addnewqueue



    • xp_trace_eventclassrequired



    • xp_trace_seteventclassrequired



    对于为每个事件添加的每列,用户都必须执行 sp_trace_setevent。在每次执行过程中,如果将 @on 设置为 1,则 sp_trace_setevent 将指定的事件添加到跟踪事件的列表。如果将 @on 设置为 0,则 sp_trace_setevent 将从列表中删除指定的事件。



    严格地键入所有 SQL 跟踪存储过程 (sp_trace_xx) 的参数。如果没有用正确的输入参数数据类型(与在参数说明中指定的相同)调用这些参数,则存储过程将返回错误。



    权限


    只有 sysadmin 固定服务器角色成员才能执行 sp_trace_setevent

    相关文章
    本页查看次数: