sp_trace_generateevent (Transact-SQL)

创建用户定义事件。

主题链接图标Transact-SQL 语法约定

语法

sp_trace_generateevent [ @eventid = ] event_id 
     [ , [ @userinfo = ] 'user_info' ]
     [ , [ @userdata = ] user_data ]

参数

  • [ @eventid=] event_id
    要打开的事件的 ID。event_id 的数据类型为 int,无默认值。ID 必须是一个从 82 到 91 的事件号,它代表用 sp_trace_setevent 设置的用户定义事件。

  • [ @userinfo= ] 'user_info'
    (可选)用户定义字符串,用于标识事件原因。user_info 的数据类型为 nvarchar(128),默认设置为 NULL。

  • [ @userdata= ] user_data
    用于事件的可选的用户指定数据。user_data 的数据类型为 varbinary(8000),默认设置为 NULL。

返回代码值

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

返回代码

说明

0

没有错误。

1

未知错误。

3

指定的事件无效。该事件可能不存在或者它不适用于此存储过程。

13

内存不足。在没有足够内存执行指定的操作时返回此代码。

注释

sp_trace_generateevent 是 Microsoft SQL Server 2000 存储过程,它执行以前由 SQL Server 早期版本中使用的 xp_trace_* 扩展存储过程执行的许多操作。请使用 sp_trace_generateevent,而不要使用 xp_trace_generate_event

只有用户定义事件的 ID 号可以与 sp_trace_generateevent 一起使用。如果使用其他事件 ID 号,SQL Server 将产生错误。

所有 SQL 跟踪存储过程 (sp_trace_xx) 的参数的类型都受到严格限制。如果没有用正确的输入参数数据类型(参数说明中指定的类型)来调用这些参数,则存储过程将返回错误。

权限

用户必须拥有 ALTER TRACE 权限。

示例

以下示例对一个示例表创建用户可配置的事件。

--Create a sample table.
CREATE TABLE user_config_test(col1 int, col2 char(10))

--DROP the trigger if it already exists.
IF EXISTS
   (SELECT * FROM sysobjects WHERE name = 'userconfig_trg')
   DROP TRIGGER userconfig_trg

--Create an ON INSERT trigger on the sample table.
CREATE TRIGGER userconfig_trg
   ON user_config_test FOR INSERT
AS
EXEC master..sp_trace_generateevent
   @event_class = 82, @userinfo = N'Inserted row into user_config_test'

--When an insert action happens, the user-configurable event fires. If 
you were capturing the event id=82, you will see it in the Profiler output.
INSERT INTO user_config_test VALUES(1, 'abc')