A primeira parte do script de coleta de dados para diagnóstico de performance está apresentado nesse artigo.
Links Relacionados
O blocker script (versão modificada) é utilizado para coletar informações que auxiliam no diagnóstico de performance SQL Server 2000. Apesar desse script ser compatível com o SQL Server 2005 e 2008, ele ainda depende de tabelas e views obsoletas como a sysprocesses. Por isso, é importante atualizar o blocker script de forma a adotar as novas DMV e DMF de sistema.
O objetivo do script (PARTE 1) é coletar informações de caráter praticamente estático, que inclui informações relacionadas a:
Infelizmente, o código do script ainda não foi finalizado, mas decidi postar no blog para a curiosidade do pessoal.
CREATE PROCEDURE #spBlockerPfe_0 AS SET NOCOUNT ON DECLARE @time DATETIME SET @time = GETDATE() PRINT '' PRINT 'MACHINE INFORMATION' PRINT '' PRINT 'ServerName: ' + @@SERVERNAME PRINT 'PhysicalName: ' + CAST(SERVERPROPERTY('ComputerNamePhysicalNetBIOS') AS VARCHAR) PRINT 'ProductVersion: ' + CAST(SERVERPROPERTY('ProductVersion') AS VARCHAR) PRINT 'ProductLevel: ' + CAST(SERVERPROPERTY('ProductLevel') AS VARCHAR) PRINT 'ResourceVersion: ' + CAST(SERVERPROPERTY('ResourceVersion') AS VARCHAR) PRINT 'ResourceLastUpdateDateTime: ' + CAST(SERVERPROPERTY('ResourceLastUpdateDateTime') AS VARCHAR) PRINT 'Edition: ' + CAST(SERVERPROPERTY('Edition') AS VARCHAR) PRINT 'ProcessId: ' + CAST(SERVERPROPERTY('ProcessId') AS VARCHAR) PRINT 'SessionId: ' + CAST(@@SPID AS VARCHAR) PRINT 'Collation: ' + CAST(SERVERPROPERTY('Collation') AS VARCHAR(32)) PRINT @@version PRINT '' PRINT 'EXEC xp_msver' PRINT '' EXEC xp_msver PRINT 'SELECT sys.configurations' PRINT '' SELECT name, value, value_in_use FROM sys.configurations PRINT 'INFO ' + convert(VARCHAR(12), datediff(ms,@time,getdate())) SET @time = GETDATE() PRINT '' PRINT 'BLOCKER_PFE_BEGIN sys.databases' -- VIEW ANY DATABASE SELECT d.name, d.database_id, d.source_database_id, d.owner_sid, d.create_date, d.compatibility_level, d.collation_name, d.user_access, d.user_access_desc, d.is_read_only, d.is_auto_close_on, d.is_auto_shrink_on, d.state, d.state_desc, d.is_in_standby, d.is_cleanly_shutdown, d.is_supplemental_logging_enabled, d.snapshot_isolation_state, d.snapshot_isolation_state_desc, d.is_read_committed_snapshot_on, d.recovery_model, d.recovery_model_desc, d.page_verify_option, d.page_verify_option_desc, d.is_auto_create_stats_on, d.is_auto_update_stats_on, d.is_auto_update_stats_async_on, d.is_ansi_null_default_on, d.is_ansi_nulls_on, d.is_ansi_padding_on, d.is_ansi_warnings_on, d.is_arithabort_on, d.is_concat_null_yields_null_on, d.is_numeric_roundabort_on, d.is_quoted_identifier_on, d.is_recursive_triggers_on, d.is_cursor_close_on_commit_on, d.is_local_cursor_default, d.is_fulltext_enabled, d.is_trustworthy_on, d.is_db_chaining_on, d.is_parameterization_forced, d.is_master_key_encrypted_by_server, d.is_published, d.is_subscribed, d.is_merge_published, d.is_distributor, d.is_sync_with_backup, d.service_broker_guid, d.is_broker_enabled, d.log_reuse_wait, d.log_reuse_wait_desc, d.is_date_correlation_on, d.is_cdc_enabled, d.is_encrypted, d.is_honor_broker_priority_on FROM sys.databases d PRINT 'BLOCKER_PFE_END sys.databases ' + convert(VARCHAR(12), datediff(ms,@time,getdate())) SET @time = GETDATE() PRINT '' PRINT 'BLOCKER_PFE_BEGIN sys.master_files' -- VIEW ANY DEFINITION SELECT * FROM sys.master_files PRINT 'BLOCKER_PFE_END sys.master_files ' + convert(VARCHAR(12), datediff(ms,@time,getdate())) SET @time = GETDATE() PRINT '' PRINT 'BLOCKER_PFE_BEGIN CleanStats' -- ALTER SERVER STATE DBCC SQLPERF('sys.dm_os_wait_stats', CLEAR) DBCC SQLPERF('sys.dm_os_latch_stats', CLEAR) PRINT 'BLOCKER_PFE_END CleanStats ' + convert(VARCHAR(12), datediff(ms,@time,getdate())) GO SELECT * from sys.dm_os_sys_info
Fiquem à vontade para usar os comentários para dar sugestões ou comentar modificações, assim como para fazer as perguntas relacionadas ao funcionamento dele.