INF: SQL Server 2000 performans izleyicisi'ni ve aktivite proje

Makale çevirileri Makale çevirileri
Makale numarası: 283696 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Özet

Bu makalede, engelleme ve performans verileri, daha ayrıntılı bir çözümleme için izleme dosyasına koyduğu ActivityTrace iş. ActivityTrace iş kodu bu makaleden bir sorgu çözümleyicisi penceresine kopyalamak ve iş oluşturmak için komut dosyasını yürütün. Olduğu gibi iş etkin ve her dakika çalışmak üzere zamanlanmış.


NOTE: Bu makalede, desteklenmez ve beklenmedik davranışa neden bir DBCC komut (DBCC PSS) anlatılır. Microsoft bu DBCC komutu yanlış kullanımından kaynaklanan sorunları çözebileceğinizi garanti etmez. Bu DBCC komut'ni kullanmak kendi sorumluluà ° unuzdadýr. Bu DBCC komutu SQL Server'ın gelecekteki sürümlerde kullanılamayabilir. Desteklenen DBCC komutların listesi için Transact-SQL başvuru bölümünde SQL Server Books Online'da "DBCC" konusuna bakın.

Iş gerçekleştirildiğinde, ilk kez ActivityTrace işlemini denetleyen C:\ActivityTrace.ini adlı bir dosya oluşturur. Bu dosyayı, Not Defteri'ni kullanarak düzenlenebilir.

Izlemeyi başlatmak için <a0></a0>, aşağıdakilerden birini veya her ikisini de belirtildiği gibi aşağıdaki değişkenleri değiştirerek ActivityTrace.ini dosyayı düzenleyin:
@blockingcheck = yes
@performancecheck = yes
değişiklik yapıldıktan sonra bir sonraki işin yürütülmesini izleme başlayacaktır.

Izlemeyi durdurmak için <a0></a0>, her ikisi de belirtildiği gibi aşağıdaki değişkenleri değiştirerek ActivityTrace.ini dosyayı düzenleyin:
@blockingcheck = no
@performancecheck = no
izleme işi yürütür sonraki açışınızda durduracak.

Izleme sonuçlarını C:\ActivityTrace.trc dosyasına yazılır. Izleme her başlatıldığında C:\ActivityTrace.trc özgün dosyanın üzerine yazılır, izleme yeniden yeniden başlatmadan önce C:\ActivityTrace.trc dosyayı başka bir konuma kopyalamak unutmayın.

SQL Profiler izleme dosyası, engelleme bulmak için veya bir performans engeli verileri görüntülemek için kullanın.

Izleme tarafından toplanan verileri çözümleme hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
283784INF: How to SQL Server 2000 faaliyet verileri görüntüle
283725INF: How to SQL Server 2000 engelleme verileri görüntüle
283886NASıL YAPıLıR: View SQL Server 2000 performans verilerini
Bir izleme denetleme hakkında daha fazla bilgi için aşağıdaki makaleye bakın:
283786BILGI: SQL Server 2000 izlemleri izlemek nasıl
Not: Yok ActivityTrace.ini dosyasına @ blockingcheck ve @ performancecheck parametreleri değiştirerek izlemeyi durdurmak emin olun. Durdurursanız, izleme, izleme yalnızca başvurulan makalede (Q283786) açıklanan yordamı depolanan izlemeyi durdurur, ancak iş devam edecek. Işin sonraki çalıştırdığında, en az bir parametre ActivityTrace.ini dosyasındaki hala yes ve özgün ActivityTrace.trc dosyanın üzerine izleme, yeniden ayarlandığını okuyacaktır.

Daha fazla bilgi

Aşağıdaki değişkenler içeren C:\ActivityTrace.ini dosya içinde ActivityTrace iş denetlenir:
  • @ performancecheck
    @ Performans Evet ise, kullanıcı olayı 83 sysperinfo tablo izleme dosyasına yazmak için kullanılır. @ Başarımı Hayır, kullanıcı olayı 83 değil oluşturulur.
  • @ blockingcheck
    @ Blockingcheck Evet ise, kullanıcı 82 ya da 'herhangi bir engelleme' kaydetmek için kullanılan veya engelleme' etkinliğidir. Engelleme varsa, kullanıcı olayı 82 sysprocesses ve syslockinfo tabloları izleme dosyasına kaydetmek için kullanılır. Kullanıcı olayı 82 de dbcc pss bilgilerini engellemeyi, izleme dosyasına var koymak için kullanılır. @ Blockingcheck ise Hayır, adım atlanır ve kullanıcı olayı 82 değil oluşturulur.
  • @ tracefile
    Veriler, bu @ tracefile değişkeninde belirtilen izleme dosyasına yazılır. @ Tracefile izleme için farklı bir sürücü ve dosya adını kaydetmek için değiştirin. Bir trc uzantısı izleme tarafından otomatik olarak eklendiğini unutmayın.
  • @ maxfilesize
    Izleme dosyası @ maxfilesize değişkeninde belirtilen megabayt sayısı eriştiğinde, dosyanın kapalı. @ Megabayt izleme dosyasının boyutunu azaltmak veya artırmak için maxfilesize değiştirin.
  • @ minMBfree
    @ Tracefile belirtilen sürücü üzerindeki boş alanın megabayt, @ minMBfree belirtilen megabayttan daha az izleme durduruldu.
  • @ stoptime
    @ Stoptime bir kez otomatik olarak durdurmak izlemeyi ayarlamak için değiştirin.
  • @ seçenekleri
    @ Seçenekler bağımsız değişkeni için 2 olarak ayarlandığında, izleme @ maxfilesize değişken aşıldığında yeni izleme dosyaları oluşturur. Izleme dosyası @ maxfilesize değişkeninde belirtilen megabayt sayısı ulaştığında dosyanın kapalı olduğuna ve yeni bir dosya oluşturulur. @ Tracefile değişkeninde belirtilen özgün izleme dosyasını C:\ActivityTrace, özgün C:\ActivityTrace.trc dosyadır. Sonraki izleme dosyası C:\ActivityTrace_1.trc, sonraki izleme dosyası C:\ActivityTrace_2.trc ve bu böyle devam eder.
  • @ olayları
    @ Olaylarının izlenmesini olayları denetlemek için değiştirin.
  • @ sütunları
    @ Izlenmesini sütunları denetlemek için sütun değiştirin.
  • @ Filtre1
    @ Süzgeç değişken sayısı, @ süzgeç değişken @ filter99 değişebilir. Süzgeç değişkenleri ile Filtre1 @ başlatmak ve sırayla, son süzgeci devam gerekir. Dört bağımsız değişkeninde @ süzgeç column_id logical_operator, comparison_operator ve değeri ' dir. Bağımsız değişkenler, Sistem saklı yordamını, sp_trace_setfilter, bir süzgeç oluşturmak için kullanılır.
  • @ job_name
    Başka bir iş adı için ActivityTrace izleme işten adını değiştirmek için @ job_name değişkeni değiştirin. Not ActivityTrace iş adını değiştirirseniz, ayrıca ActivityTrace iş özelliklerini adı değiştirmeniz gerekir.
  • @ schedule00seconds
    Evet olarak ayarlandığında, iş ActivityTrace schedule00seconds adlı zamanlamayı tarafından tanımlandığı şekilde, dakikada dakikayı üzerinde çalıştırmak için zamanlanır.
  • @ schedule15seconds
    Evet olarak ayarlandığında, iş ActivityTrace dakikada dakikayı aşan 15 saniye schedule15seconds adlı zamanlamayı tarafından tanımlandığı şekilde çalışacak şekilde zamanlanır.
  • @ schedule30seconds
    Evet olarak ayarlandığında, iş ActivityTrace dakikada dakikayı aşan 30 saniye schedule30seconds adlı zamanlamayı tarafından tanımlandığı şekilde çalışacak şekilde zamanlanır.
  • @ schedule45seconds
    Evet olarak ayarlandığında, iş ActivityTrace dakikada dakikayı aşan 45 saniye schedule45seconds adlı zamanlamayı tarafından tanımlandığı şekilde çalışacak şekilde zamanlanır.
@ Schedule00seconds @ schedule15seconds, @ schedule30seconds ve @ schedule45seconds Yes tüm kümesi, 15 saniyelik aralıklarla iş çalıştığını unutmayın. @ Schedule00seconds @ schedule15seconds, @ schedule30seconds ve @ schedule45seconds tüm kümesine yok, iş hiç çalışmaz. Bu durumda, iş çalışmadığından ActivityTrace.ini dosya değişiklik algılayamadı; bu yüzden, işi el ile zamanlama değişikliği ActivityTrace.ini dosyayı okumak izin vermek için başlatılmış olması gerekir.

@ Tracefile, @ maxfilesize, @ stoptime ve @ seçenekleri bağımsız değişkenleri hakkında ek bilgi için SQL Server 2000 Books Online'da makale sp_trace_create bakın.

@ Olayları ve @ sütunları bağımsız değişkenleri hakkında ek bilgi için SQL Server 2000 Books Online'da makale sp_trace_setevent bakın.

Süzgeçleri hakkında daha fazla bilgi için SQL Server 2000 Books Online'da makale sp_trace_setfilter bakın.

Örneğin, aşağıdaki C:\ActivityTrace.ini adlı bir @ traceini dosya içeriğini göz önünde bulundurun:
@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
				
değişkenler bu şekilde ActivityTrace.ini dosyasında vererek dakikayı ActivityTrace (@ jobname) iş dakikada çalışır (schedule00seconds = yes). Bu işlem bir engelleme içermesini izleme dosyası C:\ActivityTrace.trc (@ tracefile) ve performans izleme aktivitesi oluşturmak üzere ayarlanmış; izleme değil ancak başlatılmaz (performancecheck yok =, blockingcheck yok =).

Izleme başlatılmışsa, the tracefile 50 MB (@ maxfilesize) ulaştığında C:\ActivityTrace.trc kapatılır ve C:\ActivityTrace_1.trc (@ seçenekleri) yeni bir dosya oluşturulur. Aşağıdaki olaylar izlenmiş (@ olayları) olacaktır:
  • RPC: tamamlandı
  • RPC: başlatılıyor
  • SQL:BatchCompleted
  • SQL:BatchStarting
  • Dikkat
  • ExistingConnection
  • DTCTransaction
  • ÖZEL DURUM
  • SP: başlatılıyor
  • SP: tamamlandı
  • Karma Uyarısı
  • Kullanıcı tanımlı olay 82
  • Kullanıcı tanımlı olay 83
Aşağıdaki sütunları izlenmiş (@ sütunlar) olacaktır:
  • TextData
  • BinaryData
  • DatabaseID
  • NTUserName
  • ClientProcessID
  • ApplicationName
  • SQLSecurityLoginName
  • spid
  • SÜRE
  • StartTime
  • EndTime
  • Okuma
  • Yazma
  • CPU
  • IntegerData
Bu olaylar yalnızca yakalar, izleme olayları burada NOT ApplicationName 'SQL Profiler' (@ Filtre1), NOT ApplicationName 'Proje yöneticisi - SQLAgent' LIKE (Filtre2) LIKE süzer NOT ApplicationName LIKE 'SQLAgent - uyarı Altyapısı' (filter3), (filter4) NOT ApplicationName 'SQLAgent - genel Yenileyici' LIKE ve DatabaseID <a1>4</a1> (@ filter5) EŞIT DEĞIL.

Izleme sırasında aralık 31, 2010 (@ stoptime), 12: 00 pm durduracak.

ActivityTrace iş komut dosyası

-- 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: 
				

Özellikler

Makale numarası: 283696 - Last Review: 16 Eylül 2003 Salı - Gözden geçirme: 3.4
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Standard Edition
Anahtar Kelimeler: 
kbmt kbinfo KB283696 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:283696

Geri Bildirim Ver

 

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