2013-05-28 5 views
1

Я бегу на стороне сервера след на SQL Server 2005 Enterprise, и я получать ошибку ниже:Ошибка трассировки SQL Server 2005: «Параметр недействителен».

Msg 19064, Level 16, State 1, Procedure sp_trace_create, Line 1
The requested trace stop time has been already passed.

Я использую this information как тест для этого сценария трассировки, прежде чем я выполнить формальную стороне сервера трассировки , Согласно сайту, мне нужна переменная DATETIME (в данном случае @stop), которая, если NULL, будет продолжаться бесконечно. Ниже это уместный код следующим образом:

declare @rc int 
declare @TraceID int 
declare @maxfilesize bigint 
declare @end datetime  

set @maxfilesize = 20 
set @end = NULL 

exec @rc = sp_trace_create 
    @TraceID output 
    , 0 
    , N'\\MyFilePath\trace' 
    , @maxfilesize 
    , @end 
    , 100 
if (@rc != 0) goto error 

Я также получить это же сообщение об ошибке, если я принимаю предложение с сайта о выполнении временных рамок (например, два часа), или если я NULL (смотрите выше это). Я не получаю сообщение об ошибке, если я установить параметр 100, например, но я получаю еще одно сообщение об ошибке, которое гласит следующее:

Msg 19064, Level 16, State 1, Procedure sp_trace_create, Line 1 The requested trace stop time has been already passed.

На вершине этой ошибки, я не получаю никаких выходных файлов, таких как этот след должен генерировать. Обратите внимание, что я предполагаю, что параметр, который недопустим, является @end, потому что, когда я его изменяю - что должно быть недействительным - другие значения, он выполняется с другой ошибкой.

Остальной код, который не должен иметь отношение к этой ошибки, ниже:

-- Trace Events: REMOVED 
-- Set the Filters 
declare @intfilter int 
declare @bigintfilter bigint 

exec sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Server Profiler - 9cab2330-a33d-40d4-be59-cf5def384983' 
-- Set the trace status to start 
exec sp_trace_setstatus @TraceID, 1 
--sp_trace_setstatus @traceid = 2, @status = 0 -- Trace stop 

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

error: 
select [email protected] 

finish: 
go 

ответ

0

Моя ошибка, которая была включена на сайте:

declare @rc int 
declare @TraceID int 
declare @maxfilesize bigint 
declare @end datetime  

set @maxfilesize = 20 
set @end = NULL 

exec @rc = sp_trace_create 
    @TraceID output 
    , 0 
    , N'\\MyFilePath\trace' 
    , @maxfilesize 
    , @end 
    , 100 -- THIS GENERATES THE ERROR 
if (@rc != 0) goto error 

Когда я удалить , 100 , он работает нормально. According to the site I originally referenced этот параметр ограничивает количество файлов создали:

If you want to limit the number of files the trace creates - for example, to 10 files - add 10 to the end of the parameter list . This won’t stop the trace after it creates the number of files given for @ filecount. Instead, when the trace creates a new file, it deletes the oldest file for this trace. So if you start off with Trace_1, Trace2 … Trace_10, and then it creates Trace_11, Trace_1 will be deleted. This keeps you from filling up your hard drive with trace files.

Я буду исследовать, почему этот параметр не принимается системой (как это полезно, чтобы ограничить количество файлов, которые создаются), он может быть проблемой совместимости или чем-то связанным с выпусками.

0

Установите в 0 парам до 2.

exec @rc = sp_trace_create 
    @TraceID output 
    , 2 -- THIS CHANGED FROM 0 to 2 
    , N'\\MyFilePath\trace' 
    , @maxfilesize 
    , @end 
    , 100 -- THIS NO LONGER GENERATES THE ERROR 
Смежные вопросы