2010-06-21 12 views
0

je installation de SQL Profiler comme suit: -avec SQL Trace

Modèle: Tuning

Enregistrer pour dbo.MyTable

sélection événement: durée supérieure ou égale à 2000 (ms)

Cela va enregistrer TextData, Durée, SPID, DatabaseID, DatabaseName, ObjectType, LoginName pour les événements RPC: Terminé, SP: StmtCompleted & SQL: BatchCompleted.

J'ai exporté le script pour le suivi SQL et le script ci-dessous a été créé. Cependant, j'ai besoin de la trace pour écrire dans une table de base de données plutôt que dans un fichier. Comment changer le script pour écrire sur une table db à la place?

/****************************************************/ 
/* Created by: SQL Server Profiler 2005    */ 
/* Date: 21/06/2010 09:32:56   */ 
/****************************************************/ 


-- Create a Queue 
declare @rc int 
declare @TraceID int 
declare @maxfilesize bigint 
set @maxfilesize = 5 

-- Please replace the text InsertFileNameHere, with an appropriate 
-- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension 
-- will be appended to the filename automatically. If you are writing from 
-- remote server to local drive, please use UNC path and make sure server has 
-- write access to your network share 

exec @rc = sp_trace_create @TraceID output, 0, N'InsertFileNameHere', @maxfilesize, NULL 
if (@rc != 0) goto error 

-- Client side File and Table cannot be scripted 

-- Set the events 
declare @on bit 
set @on = 1 
exec sp_trace_setevent @TraceID, 10, 1, @on 
exec sp_trace_setevent @TraceID, 10, 3, @on 
exec sp_trace_setevent @TraceID, 10, 11, @on 
exec sp_trace_setevent @TraceID, 10, 35, @on 
exec sp_trace_setevent @TraceID, 10, 12, @on 
exec sp_trace_setevent @TraceID, 10, 13, @on 
exec sp_trace_setevent @TraceID, 45, 1, @on 
exec sp_trace_setevent @TraceID, 45, 3, @on 
exec sp_trace_setevent @TraceID, 45, 11, @on 
exec sp_trace_setevent @TraceID, 45, 35, @on 
exec sp_trace_setevent @TraceID, 45, 12, @on 
exec sp_trace_setevent @TraceID, 45, 28, @on 
exec sp_trace_setevent @TraceID, 45, 13, @on 
exec sp_trace_setevent @TraceID, 12, 1, @on 
exec sp_trace_setevent @TraceID, 12, 3, @on 
exec sp_trace_setevent @TraceID, 12, 11, @on 
exec sp_trace_setevent @TraceID, 12, 35, @on 
exec sp_trace_setevent @TraceID, 12, 12, @on 
exec sp_trace_setevent @TraceID, 12, 13, @on 


-- Set the Filters 
declare @intfilter int 
declare @bigintfilter bigint 

set @bigintfilter = 2000000 
exec sp_trace_setfilter @TraceID, 13, 0, 4, @bigintfilter 

-- Set the trace status to start 
exec sp_trace_setstatus @TraceID, 1 

-- display trace id for future references 
select [email protected] 
goto finish 

error: 
select [email protected] 

finish: 
go 

Répondre

1

Vous ne pouvez pas. Le profileur fait cela en utilisant le fournisseur de l'ensemble de lignes.

Seul le fournisseur de fichier flatfile est disponible pour les traces côté serveur. Il est facile d'insérer du fichier à la table ou simplement lire le fichier comme si c'était un tableau avec fn_trace_gettable cependant.