Coleta de dados no SQL 2008–Script 1
A primeira parte do script de coleta de dados para diagnóstico de performance está apresentado nesse artigo.
Links Relacionados
- Blocker Script original: sp_blocker_pss80
- Versão SQL2000: Blocker Modificado
- Coleta de dados no SQL 2008–Script 1
- Coleta de dados no SQL 2008–Script 2
- Coleta de dados no SQL 2008–Script 3
- Versão final: Monitor SQL (Versão atualizada do Blocker Script)
Introdução
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.
Script – Parte I
O objetivo do script (PARTE 1) é coletar informações de caráter praticamente estático, que inclui informações relacionadas a:
- Máquina (Nome virtual, nome físico, ProcessID do SQL Server)
- Instância SQL Server (Versão do produto, Service Pack aplicado, Collation)
- Configurações (sys.configuration ou sp_configure)
- Bancos de dados (sys.databases e master_files)
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.