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

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
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
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 PMBEGIN TRANSACTION  DECLARE @JobID BINARY(16)    DECLARE @ReturnCode INT  SELECT @ReturnCode = 0IF (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.'ELSEBEGIN   -- 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 filedeclare @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_outputif (@rc = 0) goto finishset @c = ''echo @blockingcheck     = no > ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @performancecheck  = no >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @tracefile         = C:\ActivityTrace >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @maxfilesize       = 50 >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @minMBfree         = 200 >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @stoptime          = 2010-12-31 12:00:00.000 >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @options           = 2 >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @events            = 10,11,12,13,16,17,19,33,42,43,55,82,83 >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @columns           = 1,2,3,6,9,10,11,12,13,14,15,16,17,18,25 >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @filter1           = 10, 0, 7, N''''SQL Profiler'''' >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @filter2           = 10, 0, 7, N''''SQLAgent - Job Manager'''' >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @filter3           = 10, 0, 7, N''''SQLAgent - Alert Engine'''' >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @filter4           = 10, 0, 7, N''''SQLAgent - Generic Refresher'''' >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @filter5           = 3, 0, 1, 4 >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @job_name          = ActivityTrace >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @schedule00seconds = yes >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @schedule15seconds = no >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @schedule30seconds = no >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputset @c = ''echo @schedule45seconds = no >> ''+@iexec master.dbo.xp_cmdshell @c, no_outputfinish: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 tracedeclare @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 sysnameselect @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 endset @on = 1set @traceid = 0if @stoptime < getdate() goto stoptraceset @cmd1 = ''dir '' + left(@tracefile,2) + '' | find "bytes free"''insert into _t1 exec master.dbo.xp_cmdshell @cmd1select @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) > 0delete _t1 where left([c1],1) != ''@''SELECT @traceid = traceid FROM :: fn_trace_getinfo(0) where property = 2 and value = @tracefileif upper(@p) != ''YES'' and upper(@b) != ''YES'' goto stoptraceif @traceid != 0 and @mbfree > @minMBfree goto finishif @mbfree <= @minMBfree goto disableif @traceid != 0 goto finishset @cmd1 = ''if exist '' + @tracefile + ''.trc '' + ''del '' + @tracefile + ''*.trc''exec @rc = master.dbo.xp_cmdshell @cmd1, no_outputif (@rc != 0) goto disableexec @rc = sp_trace_create @traceid output, @options, @tracefile, @maxfilesize, @stoptimeif (@rc != 0) goto disablegoto finishdisable:exec msdb.dbo.sp_update_job @job_name = @job_name, @enabled = 0stoptrace:exec sp_trace_setstatus @traceid, 0exec sp_trace_setstatus @traceid, 2finish:', @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 filtersdeclare @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 intset @on = 1set @traceid = 0select @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 = @tracefileif @traceid = 0 goto finishif (SELECT count(*) FROM ::fn_trace_geteventinfo(@traceid)) > 0 goto finishselect @estart = 1select @enext = charindex('','',@events,@estart)select @cstart = 1select @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 endset @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 = 2while @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 endfinish: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 checkdeclare @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 finishinsert 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''elsebegin 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  endendfinish:', @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 checkdeclare @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 intselect @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 finishinsert 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 > 0while (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 endfinish: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 ENDCOMMIT TRANSACTIONGOTO   EndSaveQuitWithRollback:  IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave: 				

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 283696 – Letzte Überarbeitung: 12/05/2015 23:36:52 – Revision: 3.4

Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbinfo KB283696 KbMtde
Feedback