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.

About these ads

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

  1. Pingback: Material de Apoio – SQL Server | Alex Souza

Deixe uma resposta

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 / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s