I am trying to write a proc that starts a trace of batch completed for a given spid and outputs duration, writes, reads and cpu to a given table. My proc isn't working and I'm hoping someone can shed some light....drop proc usp_tracestartgodrop proc usp_traceendgocreate proc usp_tracestart @spid smallint, @host varchar(256), @table varchar(256), @filter varchar(256), @queue_handle int OUTas--Declare the variablesdeclare @column_value int --data column bitmask--Set the column mask for the data columns to captureset @column_value = 67108864|1|131072|32768|65536|4096--Create a queue.exec master.dbo.xp_trace_addnewqueue 1000, --max_items 5, --timeout 95, --thread_boost 90, --thread_reduce @column_value, --required_columns @queue_handle out --queue_handle--Specify the event classes to trace.exec master.dbo.xp_trace_seteventclassrequired @queue_handle, --queue_handle 12, --event_class -> SQL:BatchCompleted 1 --isrequired--Set any filters.exec master.dbo.xp_trace_setappfilter @queue_handle, --queue_handle 'MS SQL Query Analyzer%', --'include_only_applications' 'SQL Server Profiler%' --'exclude_applications'exec master.dbo.xp_trace_setspidfilter @queue_handle, --queue_handle @spid --spidexec master.dbo.xp_trace_sethostfilter @queue_handle, --queue_handle @host, --'include_hosts' NULL --'exclude_hosts'exec master.dbo.xp_trace_settextfilter @queue_handle, --queue_handle @filter, --'include_text' NULL --'exclude_text'--Configure the queue to write to a table.exec master.dbo.xp_trace_setqueuedestination @queue_handle, --queue_handle 4, --destination -> To Table 1, --value -> enabled @host, --'server' @table --'object'--Start the consumer.exec master.dbo.xp_trace_startconsumer @queue_handle --queue_handle/*--Save the queue definition as DemoQueue.exec master.dbo.xp_trace_savequeuedefinition @queue_handle, --queue_handle 'Stats', --'queue_name' 1 --is_shared--Mark it for autostartexec master.dbo.xp_trace_setqueueautostart 'Stats', --'queue_name' 1 --is_shared*/gocreate proc usp_traceend @queue_handle intas--Destroy the traceexec master.dbo.xp_trace_destroyqueue @queue_handle --queue_handle/*exec master.dbo.xp_trace_deletequeuedefinition 'Stats', --'queue_name' 1 --is_shared*/go
... and here is some the code I am using to call my procs ...set nocount ongodrop table vctestdrop table #tracesdrop table vcstatsgocreate table vctest (pk varchar(6) not null primary key)create table #traces (queue_handle int not null primary key)godeclare @trace intexec dba.dbo.usp_tracestart @spid = @@spid, @host = 'PAGE47', @table = 'dba.dbo.vcstats', @filter = '%insert%', @queue_handle = @trace OUTinsert #tracesselect @tracegodeclare @i intset @i = 1while @i <= 1000begin insert vctest values (convert(varchar(6),@i)) set @i = @i + 1endgodeclare @trace intselect @trace = queue_handlefrom #tracesexec dba.dbo.usp_traceend @tracedelete #traceswhere queue_handle = @tracegoselect * from dba.dbo.vcstatsgo
...nothing ends up in dba.dbo.vcstats<O>Edited by - Page47 on 07/11/2002 12:48:48