Info: Projekt überwachen SQLServer 2000-Leistung und Aktivität

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 283696 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Zusammenfassung

Dieser Artikel beschreibt die ActivityTrace-Auftrag, blockieren und Leistungsdaten in einer Ablaufverfolgungsdatei zur weiteren Analyse versetzt. Kopieren Sie das ActivityTrace-Auftrag-Skript aus diesem Artikel in einem Fenster Query Analyzer, und führen Sie das Skript zum Erstellen der Auftrag aus. Ist, wird die Auftrag aktiviert und geplante Ausführung einmal pro Minute.


NOTE: Dieser Artikel beschreibt eine DBCC-Befehls (DBCC PSS), wird nicht unterstützt und kann unerwartetes Verhalten verursachen. Microsoft kann nicht garantieren, dass Probleme, die von einer falschen Verwendung dieses DBCC-Befehls herrühren, behoben werden können. Benutzen Sie den DBCC-Befehl auf eigene Verantwortung. Dieser DBCC-Befehl ist in zukünftigen Versionen von SQL Server möglicherweise nicht verfügbar. Eine Übersicht über die in SQL Server unterstützten DBCC-Befehle finden Sie in der Online-Dokumentation von SQL Server unter dem Thema "DBCC (T-SQL)".

Der ersten Ausführung der Auftrag wird eine Datei mit dem Namen C:\ActivityTrace.ini, die das ActivityTrace-Auftrag erstellt. Diese Datei kann mit dem Editor bearbeitet werden.

Bearbeiten Sie die ActivityTrace.ini-Datei zum Starten der Ablaufverfolgungs durch Ändern einer oder beide der folgenden Variablen wie bereits erwähnt:
@blockingcheck = yes
@performancecheck = yes
nach der Änderung die nächste Ausführung der Auftrag die Ablaufverfolgung starten.

Bearbeiten Sie die ActivityTrace.ini-Datei um die Ablaufverfolgung zu beenden, indem beide der folgenden Variablen wie bereits erwähnt:
@blockingcheck = no
@performancecheck = no
der nächsten die Auftrag die Ablaufverfolgung führt beendet.

Die Ergebnisse der Ablaufverfolgung werden die C:\ActivityTrace.trc-Datei geschrieben. Beginn die Ablaufverfolgung wird die ursprüngliche C:\ActivityTrace.trc-Datei überschrieben, damit die C:\ActivityTrace.trc-Datei an einen anderen Speicherort kopieren, bevor Sie die Ablaufverfolgung erneut neu starten.

Verwenden Sie SQL Profiler, um die Daten in der Ablaufverfolgungsdatei nach blockieren oder eine Barriere Leistung anzeigen.

Informationen dazu, die durch die Ablaufverfolgung erfassten Daten analysieren finden Sie folgenden Artikel der Microsoft Knowledge Base:
283784Info: How to SQL Server 2000-Aktivität Seriendruck
283725Info: How to SQL Server 2000 blockieren Seriendruck
283886Gewusst wie: Anzeigen von Leistungsdaten für SQL Server 2000
Informationen zum Steuern einer Ablaufverfolgungs finden Sie unter den folgenden Artikel:
283786Info: How to SQLServer 2000-Ablaufverfolgungen überwachen
Hinweis: Stellen Sie sicher, dass die Ablaufverfolgung ändern die Parameter @ Blockingcheck und Performancecheck @ nicht in der ActivityTrace.ini-Datei zu beenden. Wenn Sie beenden die Ablaufverfolgung über die Ablaufverfolgung gespeichert in diesem Artikel nur verwiesen (Q283786) beschriebene Verfahren, die Ablaufverfolgung wird beendet, aber der Auftrag wird fortgesetzt. Der nächsten Ausführung der Auftrag wird lesen, dass mindestens einer der Parameter in der Datei ActivityTrace.ini weiterhin so eingerichtet ist Ja und Starten der Ablaufverfolgungs, die ursprüngliche Datei ActivityTrace.trc überschrieben.

Weitere Informationen

ActivityTrace Auftrag wird durch die Datei C:\ActivityTrace.ini gesteuert, enthält die folgenden Variablen:
  • @ Performancecheck
    Wenn @ Leistung Ja ist, wird Benutzer Ereignis 83 verwendet, um die Sysperfinfo-Tabelle an die Ablaufverfolgungsdatei schreiben. Wenn die @ Leistung ist Nein, Benutzer-Ereignis 83 wird nicht generiert.
  • @ Blockingcheck
    @ Blockingcheck ist Ja, Benutzer-Ereignis 82 verwendet entweder kein-Block aufzeichnen oder "Blockieren". Wenn Sperren vorhanden ist, wird Benutzer Ereignis 82 verwendet, um die Tabellen Sysprocesses und Syslockinfo, um die Ablaufverfolgungsdatei aufzeichnen. Das Ereignis Benutzer 82 wird auch verwendet, Dbcc Pss-Informationen in der Ablaufverfolgungsdatei, wenn Sperren vorhanden ist. Wenn @ Blockingcheck ist keine, Schritt wird übersprungen, und Benutzer-Ereignis 82 wird nicht generiert.
  • @ Tracefile
    Daten werden an die Ablaufverfolgungsdatei in diese Variable @ Tracefile angegeben geschrieben. Ändern Sie @ Tracefile so speichern Sie die Ablaufverfolgung in einem anderen Laufwerk und Dateiname. Beachten Sie, dass eine Erweiterung trc durch die Ablaufverfolgung automatisch hinzugefügt wird.
  • @ Maxfilesize
    Erreicht die Ablaufverfolgungsdatei die Anzahl der Megabytes in der Variablen @ Maxfilesize angegeben, wird die Datei geschlossen. Ändern Sie @ Maxfilesize erhöhen oder verringern die Größe in Megabyte der Ablaufverfolgungsdatei.
  • @ MinMBfree
    Wenn die MB freien Speicherplatz auf dem Laufwerk in @ Tracefile angegebenen kleiner als die Megabyte in @ MinMBfree angegeben ist, wird die Ablaufverfolgung angehalten.
  • @ Stoptime
    Ändern Sie @ Stoptime festlegen eine Zeit für die Ablaufverfolgung automatisch beendet.
  • @ Optionen
    Wenn das Argument @ Optionen auf 2 festgelegt ist, wird die Ablaufverfolgung neue Ablaufverfolgungsdateien erstellt, wenn die Variable @ Maxfilesize überschritten wird. Erreicht die Ablaufverfolgungsdatei die Anzahl der Megabytes in der Variablen @ Maxfilesize angegeben, die Datei geschlossen, und eine neue Datei erstellt. Wenn die ursprüngliche Ablaufverfolgung-Datei in die Variable @ Tracefile angegebene C:\ActivityTrace ist, ist die ursprüngliche Datei C:\ActivityTrace.trc. Die nächste Ablaufverfolgungsdatei ist C:\ActivityTrace_1.trc, die nächste Ablaufverfolgungsdatei befindet, C:\ActivityTrace_2.trc usw..
  • @ Ereignisse
    Ändern Sie @ Ereignisse zu steuern, die Ereignisse verfolgt.
  • @ Spalten
    Ändern Sie @ Spalten die Spalten verfolgt steuern.
  • @ filter1
    Die Anzahl der Variablen @ Filter kann aus keine Variable @ Filter und @ filter99 liegen. Die Filter-Variablen müssen mit @ filter1 beginnen und weiterhin in der Reihenfolge auf die letzte Filter. Die vier Argumente in der Variablen @ Filter sind Column_id, Logical_operator, Comparison_operator und Wert. Die Argumente werden von der gespeicherten Systemprozedur, Sp_trace_setfilter, verwendet, um einen Filter zu erstellen.
  • @ Job_name
    Ändern Sie die Variable @ Job_name, um den Namen der Ablaufverfolgung Auftrag aus ActivityTrace mit einigen anderen Auftrag ändern. Beachten Sie, wenn Sie den Namen ActivityTrace Auftrag ändern, auch den Namen in der ActivityTrace Auftrag Eigenschaften ändern müssen.
  • @ schedule00seconds
    Auf yes festgelegt, wird der Auftrag ActivityTrace geplant jede Minute auf die Minute ausgeführt, durch den Zeitplan mit dem Namen schedule00seconds definiert.
  • @ schedule15seconds
    Auf yes festgelegt, wird Auftrag ActivityTrace geplant jede Minute auf 15 Sekunden nach der Minute ausgeführt werden, gemäß dem Zeitplan mit dem Namen schedule15seconds.
  • @ schedule30seconds
    Auf yes festgelegt, wird Auftrag ActivityTrace geplant jede Minute zu 30 Sekunden nach der Minute ausgeführt, durch den Zeitplan mit dem Namen schedule30seconds definiert.
  • @ schedule45seconds
    Auf yes festgelegt, wird Auftrag ActivityTrace geplant jede Minute zu 45 Sekunden hinter der Minute ausgeführt, durch den Zeitplan mit dem Namen schedule45seconds definiert.
Beachten Sie, wenn @ schedule00seconds, schedule15seconds @, @ schedule30seconds und @ schedule45seconds auf Ja festgelegt sind, die Auftrag wird alle 15 Sekunden ausgeführt. @ Schedule00seconds, schedule15seconds @, @ schedule30seconds und schedule45seconds @ alle auf Nein festgelegt wurden, wird die Auftrag überhaupt nicht ausgeführt. In diesem Fall da die Auftrag nicht ausgeführt wird, kann es nicht erkennen eine Änderung an der Datei ActivityTrace.ini; daher die Auftrag muss manuell gestartet werden kann zum Lesen der ActivityTrace.ini-Datei für den Zeitplan ändern.

Weitere Informationen über @ Tracefile, @ Maxfilesize, @ Stoptime und @ Optionen Argumente finden Sie in der Onlinedokumentation zu SQL Server 2000 Artikel Sp_trace_create .

Weitere Informationen über die @ Ereignisse und @ Spalten Argumente finden Sie unter SQL Server 2000-Onlinedokumentation Artikel Sp_trace_setevent .

Weitere Informationen über Filter finden Sie in der Onlinedokumentation zu SQL Server 2000 Artikel Sp_trace_setfilter .

Betrachten Sie z. B. eine @ Traceini Datei mit dem Namen C:\ActivityTrace.ini mit folgendem Inhalt:
@performancecheck  = no 
@blockingcheck     = no 
@tracefile         = C:\ActivityTrace 
@maxfilesize       = 50
@minMBfree         = 200 
@stoptime          = 2010-12-31 12:00:00.000 
@options           = 2 
@events            = 10,11,12,13,16,17,19,33,42,43,55,82,83 
@columns           = 1,2,3,6,9,10,11,12,13,14,15,16,17,18,25 
@filter1           = 10, 0, 7, N'SQL Profiler' 
@filter2           = 10, 0, 7, N'SQLAgent - Job Manager' 
@filter3           = 10, 0, 7, N'SQLAgent - Alert Engine' 
@filter4           = 10, 0, 7, N'SQLAgent - Generic Refresher' 
@filter5           = 3, 0, 1, 4 
@job_name          = ActivityTrace 
@schedule00seconds = yes 
@schedule15seconds = no 
@schedule30seconds = no 
@schedule45seconds = no
				
durch Festlegen der Variablen auf diese Weise in der Datei ActivityTrace.ini, Auftrag ActivityTrace (@jobname) führt jede Minute auf die Minute (@ schedule00seconds = Ja). Dieses Auftrag ist Ablaufverfolgungsdatei, C:\ActivityTrace.trc (@ Tracefile), um blockieren enthalten und Leistung Ablaufverfolgung von Aktivitäten erstellen eingerichtet; die Ablaufverfolgung wird jedoch nicht gestartet (@ Performancecheck = No, @ Blockingcheck = Nein).

Wenn die Ablaufverfolgung gestartet wird, wenn die Tracefile 50 MB (@ Maxfilesize) erreicht, C:\ActivityTrace.trc wird geschlossen und eine neue Datei C:\ActivityTrace_1.trc werden erstellt (@ Optionen). Die folgenden Ereignisse werden verfolgt (@ Ereignisse):
  • RPC: Completed
  • RPC: Starting
  • SQL: BatchCompleted
  • SQL: BatchStarting
  • Aufmerksamkeit
  • ExistingConnection
  • DTCTransaction
  • Ausnahme
  • SP: Starting
  • SP: Completed
  • Hash-Warnung
  • Benutzerdefiniertes Ereignis 82
  • Benutzerdefiniertes Ereignis 83
Die folgenden Spalten werden verfolgt (@ Spalten) sein:
  • TextData
  • BinaryData
  • DatabaseID
  • NTUserName
  • ClientProcessID
  • Anwendungsname
  • SQLSecurityLoginName
  • SPID
  • Dauer
  • Startzeit
  • Endzeit
  • Liest
  • Schreibt
  • CPU
  • IntegerData
Die Ablaufverfolgung wird Filtern Ereignisse, so dass Sie nur Ereignisse erfasst Anwendungsname nicht 'SQL Profiler"(@ filter1), NOT LIKE 'SQLAgent - Auftragsverwaltung' ApplicationName (@ filter2), wobei LIKE ApplicationName NOT LIKE 'SQLAgent - Warnung Engine' (@ filter3),"SQLAgent - allgemeine aktualisieren"(@ filter4), ApplicationName NOT LIKE und NOT gleich 4 (@ filter5) DatabaseID.

Die Ablaufverfolgung beendet am 12: 00 Uhr auf Dezember 31, 2010 (@ Stoptime).

ActivityTrace Auftrag Skript

-- Script generated on 2/9/2001 12:02 PM
BEGIN TRANSACTION
  DECLARE @JobID BINARY(16)  
  DECLARE @ReturnCode INT
  SELECT @ReturnCode = 0
IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = N'[Uncategorized (Local)]') < 1 
  EXECUTE msdb.dbo.sp_add_category @name = N'[Uncategorized (Local)]'
IF (SELECT COUNT(*) FROM msdb.dbo.sysjobs WHERE name = N'ActivityTrace') > 0 
  PRINT N'The job "ActivityTrace" already exists so will not be replaced.'
ELSE
BEGIN 

  -- Add the job.
  EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'ActivityTrace', @owner_login_name = N'sa', @description = N'Trace performance and blocking.', @category_name = N'[Uncategorized (Local)]', @enabled = 1, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 2, @delete_level= 0
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 

  -- Add the job steps.
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, @step_name = N'CreateIniFile', @command = N'-- create C:\ActivityTrace.ini file
declare @c nvarchar(256), @rc int, @i char(20)
set @i = ''C:\ActivityTrace.ini''
set @c = ''copy C:\ActivityTrace.ini C:\ActivityTrace.bak'' 
exec @rc = master.dbo.xp_cmdshell @c, no_output
if (@rc = 0) goto finish
set @c = ''echo @blockingcheck     = no > ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @performancecheck  = no >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @tracefile         = C:\ActivityTrace >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @maxfilesize       = 50 >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @minMBfree         = 200 >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @stoptime          = 2010-12-31 12:00:00.000 >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @options           = 2 >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @events            = 10,11,12,13,16,17,19,33,42,43,55,82,83 >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @columns           = 1,2,3,6,9,10,11,12,13,14,15,16,17,18,25 >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @filter1           = 10, 0, 7, N''''SQL Profiler'''' >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @filter2           = 10, 0, 7, N''''SQLAgent - Job Manager'''' >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @filter3           = 10, 0, 7, N''''SQLAgent - Alert Engine'''' >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @filter4           = 10, 0, 7, N''''SQLAgent - Generic Refresher'''' >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @filter5           = 3, 0, 1, 4 >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @job_name          = ActivityTrace >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @schedule00seconds = yes >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @schedule15seconds = no >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @schedule30seconds = no >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
set @c = ''echo @schedule45seconds = no >> ''+@i
exec master.dbo.xp_cmdshell @c, no_output
finish:
if exists (select * from dbo.sysobjects where id = object_id(N''[_t1]'') and OBJECTPROPERTY(id, N''IsUserTable'') = 1)
drop table [_t1]
create table _t1 ([c1] nvarchar(512))
exec (''bulk insert _t1 FROM ''''''+@i + '''''''')
', @database_name = N'master', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 3, @on_fail_step_id = 0, @on_fail_action = 2
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 2, @step_name = N'CreateTrace', @command = N'-- create trace
declare @p varchar(3), @b varchar(3), @traceid int, @options int, @tracefile nvarchar (245)
, @maxfilesize bigint, @stoptime datetime, @minMBfree bigint, @rc int, @on bit
, @cmd1 nvarchar(128), @mbfree bigint, @job_name sysname, @s sysname
select @p = cast(rtrim(ltrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as nvarchar (3)) from _t1 where left(c1,3) =  ''@pe''
select @b = cast(rtrim(ltrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as nvarchar (3)) from _t1 where left(c1,3) = ''@bl''
select @tracefile = cast(rtrim(ltrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as nvarchar (245)) from _t1 where left(c1,3) = ''@tr''
select @maxfilesize = cast(rtrim(ltrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as bigint) from _t1 where left(c1,3) = ''@ma''
select @minMBfree = cast(rtrim(ltrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as bigint) from _t1 where left(c1,3) = ''@mi''
select @stoptime = cast(rtrim(ltrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as datetime) from _t1 where left(c1,3) = ''@st''
select @options = cast(rtrim(ltrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as int) from _t1 where left(c1,3) = ''@op''
select @job_name = cast(rtrim(ltrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as sysname) from _t1 where left(c1,3) = ''@jo''
while (select count(*) from _t1 where left(c1,3) = ''@sc'') > 0
 begin
 select top 1 @s = cast(rtrim(ltrim(substring(c1,2,charindex(''='',c1,1)-2))) as sysname) 
 , @on = case upper(cast(rtrim(ltrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as varchar(3)))
 when ''YES'' then 1 else 0 end from _t1 where left(c1,3) = ''@sc''
 EXEC msdb.dbo.sp_update_jobschedule @job_name=@job_name, @name = @s, @enabled = @on
 delete _t1 where cast(rtrim(ltrim(substring(c1,2,charindex(''='',c1,1)-2))) as sysname)  = @s
 end
set @on = 1
set @traceid = 0
if @stoptime < getdate() goto stoptrace
set @cmd1 = ''dir '' + left(@tracefile,2) + '' | find "bytes free"''
insert into _t1 exec master.dbo.xp_cmdshell @cmd1
select @mbfree = cast(replace(substring(c1,charindex(''Dir'',c1)+6,charindex(''bytes free'',c1)
       -(charindex(''Dir'',c1)+6)),'','','''') as bigint)/1024/1024
  from _t1 where charindex(''bytes free'',c1) > 0
delete _t1 where left([c1],1) != ''@''
SELECT @traceid = traceid FROM :: fn_trace_getinfo(0) where property = 2 and value = @tracefile
if upper(@p) != ''YES'' and upper(@b) != ''YES'' goto stoptrace
if @traceid != 0 and @mbfree > @minMBfree goto finish
if @mbfree <= @minMBfree goto disable
if @traceid != 0 goto finish
set @cmd1 = ''if exist '' + @tracefile + ''.trc '' + ''del '' + @tracefile + ''*.trc''
exec @rc = master.dbo.xp_cmdshell @cmd1, no_output
if (@rc != 0) goto disable
exec @rc = sp_trace_create @traceid output, @options, @tracefile, @maxfilesize, @stoptime
if (@rc != 0) goto disable
goto finish
disable:
exec msdb.dbo.sp_update_job @job_name = @job_name, @enabled = 0
stoptrace:
exec sp_trace_setstatus @traceid, 0
exec sp_trace_setstatus @traceid, 2
finish:', @database_name = N'master', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 3, @on_fail_step_id = 0, @on_fail_action = 2
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 3, @step_name = N'SetEvents', @command = N'-- set trace events and filters
declare @traceid int, @tracefile  nvarchar (245), @rc int, @on bit, @cmd1 nvarchar(256)
, @events varchar(512), @columns varchar(512), @event int, @column int, @estart int, @enext int
, @cstart int, @cnext int, @le int, @lc int, @filter nvarchar(245), @filter_num int
set @on = 1
set @traceid = 0
select @tracefile = cast(ltrim(rtrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as nvarchar (245)) from _t1 where left(c1,3) = N''@tr''
select @events=cast(ltrim(rtrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as nvarchar (512)) from _t1 where left(c1,3) = N''@ev''
select @columns=cast(ltrim(rtrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as nvarchar (512)) from _t1 where left(c1,3) = N''@co''
SELECT @traceid = traceid FROM :: fn_trace_getinfo(0) where property = 2 and value = @tracefile
if @traceid = 0 goto finish
if (SELECT count(*) FROM ::fn_trace_geteventinfo(@traceid)) > 0 goto finish
select @estart = 1
select @enext = charindex('','',@events,@estart)
select @cstart = 1
select @cnext = charindex('','',@columns,@cstart)
set @le = len(@events)
set @lc = len(@columns)
while @enext > 0
 begin
 select @event = cast(substring(@events,@estart,@enext-@estart) as int)
 while @cnext > 0
  begin
  select @column = cast(substring(@columns,@cstart,@cnext-@cstart) as int)
  exec sp_trace_setevent @traceid, @event, @column, @on
  select @cstart = @cnext + 1
  select @cnext = charindex('','',@columns,@cstart)
  if @cnext = 0 set @cnext = @lc + 1
  if @cstart >@lc set @cnext = 0
  end
 select @cstart = 1
 select @cnext = charindex('','',@columns,@cstart)
 select @estart = @enext + 1
 select @enext = charindex('','',@events,@estart)
 if @enext = 0 set @enext = @le + 1
 if @estart > @le set @enext = 0
 end
set @cmd1 = ''exec sp_trace_setfilter '' 
set @filter = N''none''
select @filter = cast(ltrim(rtrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as nvarchar (245))
 from _t1
 where cast(ltrim(rtrim(substring(c1,1,charindex(''='',c1,1)-1))) as nvarchar (245)) = N''@filter1''
set @filter_num = 2
while @filter != N''none''
 begin
 exec (@cmd1 + @traceid + '',''+@filter)
 set @filter_num = @filter_num + 1
 set @filter = N''none''
 select @filter = cast(ltrim(rtrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as nvarchar (245)) from _t1
 where cast(ltrim(rtrim(substring(c1,1,charindex(''='',c1,1)-1))) as nvarchar (245)) = N''@filter'' + cast(@filter_num as nvarchar(3))
 select @filter
 end
finish:
exec sp_trace_setstatus @traceid, 1', @database_name = N'master', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 3, @on_fail_step_id = 0, @on_fail_action = 2
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 4, @step_name = N'blocking', @command = N'-- blocking check
declare @s table(id1 int identity, spid smallint, b smallint, d1 bit, ud binary(2540))
declare @ud binary(2540), @id int, @spid smallint, @c nvarchar(128), @b varchar(3), @rc int,@ui nvarchar(128)
select @b = cast(rtrim(ltrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as nvarchar (3))
  from _t1 where left(c1,3) =  ''@bl''
if upper(@b) != ''YES'' goto finish
insert into @s select spid, blocked, 0
,cast(spid as binary(2))+cast(kpid as binary(2))+cast(blocked as binary(2))+waittype
+cast(waittime as binary(4))+cast(lastwaittype as binary(64))+cast(waitresource as binary(512))
+cast(dbid as binary(2))+cast(uid as binary(2))+cast(cpu as binary(4))
+cast(physical_io as binary(8))+cast([memusage] as binary(4))+cast(login_time as binary(8))
+cast(last_batch as binary(8)) +cast(ecid as binary(2))+cast(open_tran as binary(2))
+cast(status as binary(60))+cast(sid as binary(86))+cast(hostname as binary(256))
+cast(program_name as binary(256))+cast(hostprocess as binary(16))+cast(cmd as binary(32))
+cast(nt_domain as binary(256))+cast(nt_username as binary(256))+cast(net_address as binary(24))
+cast(net_library as binary(24))+cast(loginame as binary(256))+cast([context_info] as binary(128))
+cast(l.rsc_text as binary(64))+cast(rsc_bin as binary(16))+cast(rsc_valblk as binary(16))
+cast(rsc_dbid as binary(2))+cast(rsc_indid as binary(2))+cast(rsc_objid as binary(4))
+cast(rsc_type as binary(1))+cast(rsc_flag as binary(1)) +cast(req_mode as binary(1))
+cast(req_status as binary(1))+cast(req_refcnt as binary(2))+cast(req_cryrefcnt as binary(2))
+cast(req_lifetime as binary(4))+cast(req_spid as binary(4))+cast(req_ecid as binary(4))
+cast(req_ownertype as binary(2))+cast(req_transactionID as binary(8))
+cast(req_transactionUOW as binary(16))
 from master.dbo.sysprocesses p join master.dbo.syslockinfo l on p.spid = l.req_spid
 where (blocked != 0 or waittype != 0x0000) or (blocked = 0 and spid in
 (select blocked from master.dbo.sysprocesses where blocked != 0))
if (select top 1 count(*) from @s) < 1 exec sp_trace_generateevent  82,  N''no block''
else
begin
 update @s set d1 = 1 where b = 0 and spid in (select b from @s where b != 0)
 while (select top 1 count(*) from @s where d1 = 1) > 0
  begin
  select top 1 @spid = spid from @s where d1 = 1
  set @c = ''osql -S''+@@servername+'' -Q"dbcc traceon(3604) dbcc pss(0,''
         + cast(@spid as nvarchar(3))+ '')" -o C:\pss.txt -w128''
  exec @rc = master.dbo.xp_cmdshell @c, no_output
  if (@rc = 0) bulk insert _t1 FROM ''C:\pss.txt''
  delete _t1 where left([c1],2) = ''00''
  update @s set d1 = 0 where spid = @spid
  while (select top 1 count(*) from _t1 where left([c1],1) != ''@'') > 0
   begin
   select top 1 @ui = c1 from _t1 where left([c1],1) != ''@''
   exec sp_trace_generateevent 82, @ui
   delete _t1 where left(c1,5) = left(@ui,5)
   end
  set @c = ''del C:\pss.txt''
  exec master.dbo.xp_cmdshell @c, no_output
  end
 while (select top 1 count(*) from @s where d1 = 0) > 0
  begin
  select top 1 @id = id1, @ud = ud from @s where d1 = 0
  exec sp_trace_generateevent 82, N''blocking'', @ud
  delete @s where id1 = @id
  end
end
finish:', @database_name = N'master', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 3, @on_fail_step_id = 0, @on_fail_action = 2
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 5, @step_name = N'performance', @command = N'-- performance check
declare @s table (id1 int IDENTITY, UserData nvarchar(128))
declare @UserData nvarchar(128), @id1 int, @p varchar(3), @b varchar(3), @rc int
, @cmd nvarchar(80),@userinfo nvarchar(128), @row int, @lastrow int
select @p = cast(rtrim(ltrim(substring(c1,charindex(''='',c1,1)+1,len(c1)))) as nvarchar (3))
  from _t1 where left(c1,3) =  ''@pe''
if upper(@p) != ''YES'' goto finish
insert into @s 
select
  left([object_name],40)
+ left([counter_name],40)
+ left([instance_name],35)
+ cast([cntr_value] as nchar(11))
  from master.dbo.sysperfinfo where cntr_value > 0
while (select top 1 [id1] from @s) > 0
 begin
 select top 1 @id1 = [id1], @UserData = [UserData] from @s
 exec sp_trace_generateevent @eventid = 83,  @userinfo = @UserData
 delete @s where [id1] = @id1
 end
finish:
if exists (select * from dbo.sysobjects where id = object_id(N''[_t1]'') and OBJECTPROPERTY(id, N''IsUserTable'') = 1)
drop table [_t1]', @database_name = N'master', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1 

  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 

  -- Add the job schedules.
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'schedule00seconds', @enabled = 1, @freq_type = 4, @active_start_date = 20001220, @active_start_time = 0, @freq_interval = 1, @freq_subday_type = 4, @freq_subday_interval = 1, @freq_relative_interval = 0, @freq_recurrence_factor = 0, @active_end_date = 99991231, @active_end_time = 235959
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'schedule30seconds', @enabled = 1, @freq_type = 4, @active_start_date = 20001227, @active_start_time = 30, @freq_interval = 1, @freq_subday_type = 4, @freq_subday_interval = 1, @freq_relative_interval = 0, @freq_recurrence_factor = 0, @active_end_date = 99991231, @active_end_time = 235959
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'schedule15seconds', @enabled = 1, @freq_type = 4, @active_start_date = 20001227, @active_start_time = 15, @freq_interval = 1, @freq_subday_type = 4, @freq_subday_interval = 1, @freq_relative_interval = 0, @freq_recurrence_factor = 0, @active_end_date = 99991231, @active_end_time = 235959
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'schedule45seconds', @enabled = 1, @freq_type = 4, @active_start_date = 20001227, @active_start_time = 45, @freq_interval = 1, @freq_subday_type = 4, @freq_subday_interval = 1, @freq_relative_interval = 0, @freq_recurrence_factor = 0, @active_end_date = 99991231, @active_end_time = 235959
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 

  -- Add the Target Servers.
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)' 
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 

END
COMMIT TRANSACTION
GOTO   EndSave
QuitWithRollback:
  IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION 
EndSave: 
				

Eigenschaften

Artikel-ID: 283696 - Geändert am: Dienstag, 16. September 2003 - Version: 3.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2000 Standard Edition
Keywords: 
kbmt kbinfo KB283696 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 283696
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com