Search

onze sponsors

microsoft_logo.gif


 

computrain_logo.JPG

Forum Login | Register
   Forum

 

Subject: Serverside trace
Prev Next
You are not authorized to post a reply.

Author Messages
A SUser is Offline

Posts:25

27-12-2007 13:39:38 Alert 
Beste SQLérs,

Ik heb een aantal scripts geschreven om een serverside trace te draaien. Dit is mijn opzet:
1) Trace wordt gecreerd/gestart (met een jobje)
2) Trace wordt na 24 uur gestopt (met een jobje)
3) Trace file wordt ingelezen in tabel (werkt niet goed!)
4) Tracefile wordt weggegooid (gaat prima)

Ik krijg geen duidelijke fout in de windows event viewer, helaas, maar als ik het onderstaande stukje code in de Query Analyzer (sql 2000) uitvoer, dan krijg ik volgende melding:

Code:
INSERT INTO dbo.test
       (EventClass, TextData, DatabaseID, NTUserName, ClientProcessID,  ApplicationName, LoginName, SPID, Duration, StartTime, Reads, Writes, CPU)
   SELECT EventClass, TextData, DatabaseID, NTUserName, ClientProcessID,  ApplicationName, LoginName, SPID, Duration, StartTime, Reads, Writes, CPU
     FROM ::fn_trace_gettable('trace20071227.trc', default)

Foutmelding: Server: Msg 567, Level 16, State 1, Line 1
File 'trace20071227.trc' either does not exist or is not a recognizable trace file. Or there was an error opening the file.

Microsoft oplossing: http://support.microsoft.com/kb/273972

Ik heb de rollover optie op 3 staan (zie http://msdn2.microsoft.com/en-us/library/ms190362.aspx), maar dit mag niet baten.

Als iemand ideeen heeft of alle stored procedures wil zien, dan hoor ik het wel.

mvg, AS
David ScheltensUser is Offline

Posts:33

27-12-2007 14:47:54 Alert 
je moet denk ik op twee dingen letten:

1. naast stoppen ook sluiten (sp_trace_setstatus @traceid = x, @status = 2)
2. geef een volledig pad op bij fn_trace_gettable



Gr,
David
A SUser is Offline

Posts:25

27-12-2007 15:11:24 Alert 
Beste Davis,

Bedankt voor je reactie! Ik sluit de trace ook, en het bestand wordt met volledig pad meegegeven. In eerste instantie geeft hij ook geen error, en ik zie dat ik niet het padnaam meegeef als ik het inlezen handmatig doe (das mijn fout). Maar als ik dat nu wel doe dan krijg ik geen foutmelding meer:

INSERT INTO dbo.test
(EventClass, TextData, DatabaseID, NTUserName, ClientProcessID, ApplicationName, LoginName, SPID, Duration, StartTime, Reads, Writes, CPU)
SELECT EventClass, TextData, DatabaseID, NTUserName, ClientProcessID, ApplicationName, LoginName, SPID, Duration, StartTime, Reads, Writes, CPU
FROM ::fn_trace_gettable('c:\trace20071227.trc', default)

De melding is: (0 row(s) affected)

Terwijl ik toch zeker wat selects heb uitgevoerd, dus er zou wat in de log moeten staan.

mvg, Anne
David ScheltensUser is Offline

Posts:33

27-12-2007 20:47:42 Alert 
Wellicht een hele overbodige vraag, maar doe het toch: heb je op zijn minst de SQL:BatchCompleted en RPC:Completed meegenomen in de trace?
A SUser is Offline

Posts:25

28-12-2007 10:34:10 Alert 
Hoi David,

Niks is overbodig hoor, je weet nooit, kan zo maar iets heel stoms zijn :)

Hier mijn stored procedure:

CREATE PROCEDURE [dbo].[stp_start_profiler] AS DECLARE @rc INT DECLARE @TraceID INT DECLARE @maxFileSize bigint DECLARE @fileName NVARCHAR(128) DECLARE @on bit -- Set values SET @maxFileSize = 5 SET @fileName = 'c:\trace' + CONVERT(varchar(4),YEAR(GETDATE())) + CONVERT(varchar(4),MONTH(GETDATE())) + CONVERT(varchar(4),DAY(GETDATE())) --SET @fileName = N'C:\TestTrace1' SET @on = 1 -- Create trace EXEC @rc = sp_trace_create @TraceID output, 2, @fileName, @maxFileSize, NULL -- If error end process IF (@rc != 0) GOTO error -- Set the events and data to collect EXEC sp_trace_setevent @TraceID, 45, 1, @on EXEC sp_trace_setevent @TraceID, 45, 12, @on EXEC sp_trace_setevent @TraceID, 45, 13, @on EXEC sp_trace_setevent @TraceID, 45, 14, @on EXEC sp_trace_setevent @TraceID, 45, 15, @on EXEC sp_trace_setevent @TraceID, 45, 16, @on EXEC sp_trace_setevent @TraceID, 45, 17, @on -- Set Filters -- filter1 include databaseId = 6 EXEC sp_trace_setfilter @TraceID, 3, 1, 0, 6 -- filter2 exclude application SQL Profiler EXEC sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Profiler' -- Start the trace EXEC sp_trace_setstatus @TraceID, 1 -- display trace id for future references SELECT TraceID=@TraceID INSERT INTO Traces (TraceID, Starttijd, Eindtijd, bestandsnaam) VALUES (@TraceID, getdate(), NULL, @fileName) GOTO finish -- error trap error: SELECT ErrorCode=@rc -- exit finish: GO
A SUser is Offline

Posts:25

28-12-2007 10:35:01 Alert 
CREATE   PROCEDURE [dbo].[stp_start_profiler]
AS
DECLARE @rc INT
DECLARE @TraceID INT
DECLARE @maxFileSize bigint
DECLARE @fileName NVARCHAR(128)
DECLARE @on bit
-- Set values
SET @maxFileSize = 5
SET @fileName = 'c:\trace' + CONVERT(varchar(4),YEAR(GETDATE())) + CONVERT(varchar(4),MONTH(GETDATE())) + CONVERT(varchar(4),DAY(GETDATE()))
--SET @fileName = N'C:\TestTrace1'
SET @on = 1
-- Create trace
EXEC @rc = sp_trace_create @TraceID output, 2, @fileName, @maxFileSize, NULL 
-- If error end process
IF (@rc != 0) GOTO error
-- Set the events and data to collect
EXEC sp_trace_setevent @TraceID, 45,  1, @on
EXEC sp_trace_setevent @TraceID, 45, 12, @on
EXEC sp_trace_setevent @TraceID, 45, 13, @on
EXEC sp_trace_setevent @TraceID, 45, 14, @on
EXEC sp_trace_setevent @TraceID, 45, 15, @on
EXEC sp_trace_setevent @TraceID, 45, 16, @on
EXEC sp_trace_setevent @TraceID, 45, 17, @on
-- Set Filters
-- filter1 include databaseId = 6
EXEC sp_trace_setfilter @TraceID, 3, 1, 0, 6
-- filter2 exclude application SQL Profiler
EXEC sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Profiler'
-- Start the trace
EXEC sp_trace_setstatus @TraceID, 1
 
-- display trace id for future references 
SELECT TraceID=@TraceID 
INSERT INTO Traces (TraceID, Starttijd, Eindtijd, bestandsnaam)
VALUES (@TraceID, getdate(), NULL, @fileName)
GOTO finish 
-- error trap
error: 
SELECT ErrorCode=@rc 
-- exit
finish: 

GO
Robert HartskeerlUser is Offline

Posts:86

28-12-2007 14:25:31 Alert 
Heb je het ook al geprobeerd zonder filters?

Ik heb je code overgenomen en enkel het databaseid aangepast en bij mij wordt netjes een tracefile aangemaakt die ik dan ook met de profiler of fn_trace_gettable kan openen.

Gr.
Robert Hartskeerl
David ScheltensUser is Offline

Posts:33

29-12-2007 14:22:16 Alert 
zat ook al te denken dat het eventueel aan de filter lag ^^
test anders eerst door met profiler zelf naar een bestand op te slaan, wat je ziet tijdens uitvoer op scherm wordt dan ook in het trc bestand opgeslagen.
You are not authorized to post a reply.
Forums > Forums > Ontwikkelen > Serverside trace



ActiveForums 3.6
  
Copyright (c) 2012 PASS Nederland   Privacy Statement  Terms Of Use