sp_trace_generateevent (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')