Dezembro – 2012 – Short Script – Especial

Pessoal, boa tarde.

Final de Ano chegando, todos em férias, festas e procurando descansar para recarregar as baterias para o próximo ano.

Muito bem, passei os últimos dias garimpando um pouco os meus Scripts e encontrei uma das mais dinâmicas relação de códigos que podem ajudar, na obtenção de informações sobre o seu Servidor SQL Server, Instância SQL Server, Banco de Dados, Transações, Visões de Sistema, Funções de Sistema, enfim, conseguir descobrir o monitorar a vida do seu Microsoft SQL Server.

Para fazer um pequeno suspense não vou revelar o conteúdo desta relação, segue abaixo os Scripts de acordo com a sua funcionalidade:

1 – Script – Monitoramento de Transações Ativas:

SELECT st.session_id,

DB_NAME(dt.database_id) AS database_name,

CASE WHEN dt.database_transaction_begin_time IS NULL THEN ‘read-only’

ELSE ‘read-write’

END AS transaction_state ,

dt.database_transaction_begin_time AS read_write_start_time,

dt.database_transaction_log_record_count,

dt.database_transaction_log_bytes_used

FROM sys.dm_tran_session_transactions AS st INNER JOIN sys.dm_tran_database_transactions AS dt

ON st.transaction_id = dt.transaction_id

ORDER BY st.session_id,  database_name

2 – Script – Estatísticas de Leitura e Escrita de Índices em Todos os Bancos de Dados:

SELECT  OBJECT_NAME(s.[object_id]) AS [ObjectName],

i.name AS [IndexName],

i.index_id,

user_seeks + user_scans + user_lookups AS [Reads],

user_updates AS [Writes],

i.type_desc AS [IndexType],

i.fill_factor AS [FillFactor]

FROM sys.dm_db_index_usage_stats AS s INNER JOIN sys.indexes AS i

ON s.[object_id] = i.[object_id]

WHERE   OBJECTPROPERTY(s.[object_id], ‘IsUserTable’) = 1

AND i.index_id = s.index_id

AND s.database_id = DB_ID()

ORDER BY OBJECT_NAME(s.[object_id]), writes DESC, reads DESC ;

 

3 – Script – Lista de Índices não utilizados no Banco de Dados Corrente:

SELECT OBJECT_NAME(i.[object_id]) AS [Table Name],

i.name

FROM sys.indexes AS I INNER JOIN sys.objects AS o

ON i.[object_id] = o.[object_id]

WHERE   i.index_id NOT IN (SELECT  s.index_id FROM sys.dm_db_index_usage_stats AS s

WHERE   s.[object_id] = i.[object_id]

AND i.index_id = s.index_id

AND database_id = DB_ID())

AND o.[type] = ‘U’

ORDER BY OBJECT_NAME(i.[object_id]) ASC ;

 

4 – Script – Lista de Tabelas, Índices e quantidade de Registros:

SELECT OBJECT_NAME(ps.[object_id]) AS [TableName],

i.name AS [IndexName],

SUM(ps.row_count) AS [RowCount]

FROM sys.dm_db_partition_stats AS ps INNER JOIN sys.indexes AS i

ON i.[object_id] = ps.[object_id]

AND i.index_id = ps.index_id

WHERE i.type_desc IN ( ‘CLUSTERED’, ‘HEAP’ )

AND i.[object_id] > 100

AND OBJECT_SCHEMA_NAME(ps.[object_id]) <> ‘sys’

GROUP BY ps.[object_id], i.name

ORDER BY SUM(ps.row_count) DESC ;

 

5 – Script – Obtendo a quantidade de Espaço Livre no Banco de Dados de Sistema – TEMPDB:

SELECT  SUM(unallocated_extent_page_count) AS [free pages],

(SUM(unallocated_extent_page_count) * 1.0 / 128 ) AS [free space in MB]

FROM    sys.dm_db_file_space_usage;

 

6 – Script – Resumo de Informações sobre utilização do Banco de Dados de Sistema – TEMPDB:

SELECT SUM(user_object_reserved_page_count) * 8.192 AS [UserObjectsKB] ,

SUM(internal_object_reserved_page_count) * 8.192 AS [InternalObjectsKB] ,

SUM(version_store_reserved_page_count) * 8.192 AS [VersonStoreKB] ,

SUM(unallocated_extent_page_count) * 8.192 AS [FreeSpaceKB]

FROM sys.dm_db_file_space_usage;

 

7 – Script – Lista de Requisições pendentes de I/O por arquivo de banco de dados:

SELECT  DB_NAME(mf.database_id) AS [Database] ,

mf.physical_name ,

r.io_pending ,

r.io_pending_ms_ticks ,

r.io_type ,

fs.num_of_reads ,

fs.num_of_writes

FROM sys.dm_io_pending_io_requests AS r INNER JOIN sys.dm_io_virtual_file_stats(NULL, NULL) AS fs

ON r.io_handle = fs.file_handle

INNER JOIN sys.master_files AS mf

ON fs.database_id = mf.database_id

AND fs.file_id = mf.file_id

ORDER BY r.io_pending, r.io_pending_ms_ticks DESC;

 

8 – Script – Total de tempo de espera em milisegundos utilizado pelos processadores disponíveis para o SQL Server:

SELECT  CAST(100.0 * SUM(signal_wait_time_ms) / SUM(wait_time_ms) AS NUMERIC(20,2)) AS [%signal (cpu) waits] ,

CAST(100.0 * SUM(wait_time_ms – signal_wait_time_ms) / SUM(wait_time_ms) AS NUMERIC(20, 2)) AS [%resource waits]

FROM sys.dm_os_wait_stats;

** Quando os valores apresentados pela coluna %Signal CPU Waits estiver elevado poderá representar Pressão de processamento sobre os CPUs.

 

——————————————————————————————————————————————————————————————————————-

Pois bem pessoal, estou encerramento mais este Short Script, espero que todos possam ter gostado e que estes códigos servim para ajudar no seu dia á dia.

 

Mais uma vez obrigado pelo grande crescimento na audiência do meu Blog que cresceu de forma grandiosa.

Um grande abraço para todos, nos encontramos em breve.

Feliz 2013 para todos.

4 comentários sobre “Dezembro – 2012 – Short Script – Especial

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alteração )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alteração )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alteração )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alteração )

Conectando a %s