Short Script – Março – 2014

Salve, galera!!!

Mais uma vez começando e como de costume vou complicar com vocês, mas alguns Short Scripts, específicos para o Microsoft SQL Server 2008, R2 e 2012.

Na relação de hoje, vocês vão poder encontrar Scripts sobre:

– History Auto Page Repair;

– Long Running SQL/CLR Tasks;

– Process Address Space Info;

– Information about Memory Amounts and State;

– Numa State;

– CPU Utilization History in the Last 30 minutes;

– Isolate Top Waits for Instance Since Last Server Restart; e

– Pending I/O Request By File.

Fique a vontade para compartilhar e melhorar estes códigos, a seguir você encontra-rá cada um deles:

Exemplo 1 – History Auto Page Repair:

SELECT  DB_NAME(database_id) AS [database_name] ,
        database_id ,
        file_id ,
        page_id ,
        error_type ,
        page_status ,
        modification_time
FROM    sys.dm_db_mirroring_auto_page_repair ;

Exemplo 2 –  Long Running SQL/CLR Tasks:

SELECT  os.task_address ,
        os.[state] ,
        os.last_wait_type ,
        clr.[state] ,
        clr.forced_yield_count
FROM    sys.dm_os_workers AS os
        INNER JOIN sys.dm_clr_tasks AS clr
                     ON ( os.task_address = clr.sos_task_address )
WHERE   clr.[type] = ‘E_TYPE_USER’ ;

Exemplo 3 – Process Address Space Info:

SELECT  physical_memory_in_use_kb,
        locked_page_allocations_kb,
        page_fault_count,
        memory_utilization_percentage,
        available_commit_limit_kb,
        process_physical_memory_low,
        process_virtual_memory_low
FROM    sys.dm_os_process_memory ;

Exemplo 4 – Information about Memory Amounts and State:

SELECT  total_physical_memory_kb ,
        available_physical_memory_kb ,
        total_page_file_kb ,
        available_page_file_kb ,
        system_memory_state_desc
FROM    sys.dm_os_sys_memory ;

Exemplo 5 – Numa State:

SELECT  CASE COUNT(DISTINCT parent_node_id)
          WHEN 1 THEN ‘NUMA disabled’
          ELSE ‘NUMA enabled’
        END
FROM    sys.dm_os_schedulers
WHERE   parent_node_id <> 32 ;

Exemplo 6 – CPU Utilization History in the Last 30 minutes:

DECLARE @ts_now bigint = (SELECT cpu_ticks/(cpu_ticks/ms_ticks) FROM sys.dm_os_sys_info);

SELECT TOP(30)

SQLProcessUtilization AS [SQL Server Process CPU Utilization],

SystemIdle AS [System Idle Process],

100 – SystemIdle – SQLProcessUtilization AS [Other Process CPU Utilization],

DATEADD(ms, -1 * (@ts_now – [timestamp]), GETDATE()) AS [Event Time]

FROM (

SELECT record.value(‘(./Record/@id)[1]’, ‘int’) AS record_id,

record.value(‘(./Record/SchedulerMonitorEvent/SystemHealth/SystemIdle)[1]’, ‘int’) AS [SystemIdle],

record.value(‘(./Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization)[1]’,’int’) AS [SQLProcessUtilization], [timestamp]

FROM (

SELECT [timestamp], CONVERT(xml, record) AS [record]

FROM sys.dm_os_ring_buffers

WHERE ring_buffer_type = N’RING_BUFFER_SCHEDULER_MONITOR’

AND record LIKE N’%<SystemHealth>%’) AS x

) AS y

ORDER BY record_id DESC;

Exemplo 7 – Isolate Top Waits for Instance Since Last Server Restart:

WITH    Waits

AS ( SELECT   wait_type ,

wait_time_ms / 1000. AS wait_time_s ,

100. * wait_time_ms / SUM(wait_time_ms) OVER ( ) AS pct ,

ROW_NUMBER() OVER ( ORDER BY wait_time_ms DESC ) AS rn

FROM     sys.dm_os_wait_stats

WHERE    wait_type NOT IN ( ‘CLR_SEMAPHORE’, ‘LAZYWRITER_SLEEP’,

‘RESOURCE_QUEUE’, ‘SLEEP_TASK’,

‘SLEEP_SYSTEMTASK’,

‘SQLTRACE_BUFFER_FLUSH’, ‘WAITFOR’,

‘LOGMGR_QUEUE’, ‘CHECKPOINT_QUEUE’,

‘REQUEST_FOR_DEADLOCK_SEARCH’,

‘XE_TIMER_EVENT’, ‘BROKER_TO_FLUSH’,

‘BROKER_TASK_STOP’,

‘CLR_MANUAL_EVENT’,

‘CLR_AUTO_EVENT’,

‘DISPATCHER_QUEUE_SEMAPHORE’,

‘FT_IFTS_SCHEDULER_IDLE_WAIT’,

‘XE_DISPATCHER_WAIT’,

‘XE_DISPATCHER_JOIN’ )

)

SELECT  W1.wait_type ,

CAST(W1.wait_time_s AS DECIMAL(12, 2)) AS wait_time_s ,

CAST(W1.pct AS DECIMAL(12, 2)) AS pct ,

CAST(SUM(W2.pct) AS DECIMAL(12, 2)) AS running_pct

FROM    Waits AS W1

INNER JOIN Waits AS W2 ON W2.rn <= W1.rn

GROUP BY W1.rn ,

W1.wait_type ,

W1.wait_time_s ,

W1.pct

HAVING  SUM(W2.pct) – W1.pct < 95 ; — percentage threshold

Exemplo 8 – Pending I/O Request By File:

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;

Legal, mais uma relação de Short Scripts compartilhada com vocês, espero que este conteúdo possa ser útil no seu dia – á – dia.

Um grande abraço.

Até a próxima.

Autor: Junior Galvão - MVP

Profissional com vasta experiência na área de Tecnologia da Informação e soluções Microsoft. Graduado no Curso Superior em Gestão da Tecnologia de Sistemas de Informação pela Uninove - Campus São Roque. Pós-Graduado no Curso de Gestão e Engenharia de Processos para Desenvolvimento de Software com RUP na Faculdade FIAP - Faculdade de Informática e Administração Paulista de São Paulo. Pós-Graduado em Gestão da Tecnologia da Informação Faculdade - ESAMC Sorocaba. Cursando Mestrado em Ciências da Computação - UFSCar - Campus - Sorocaba. Formação MCDBA Microsoft, autor de artigos acadêmicos e profissionais postados em Revistas, Instituições de Ensino e WebSistes. Meu primeiro contato com tecnologia ocorreu em 1995 após meus pais comprarem nosso primeiro computador, ano em que as portas para este fantástico mundo se abriram. Neste mesmo ano, comecei o de Processamento de Dados, naquele momento a palavra TI não existia, na verdade a Tecnologia da Informação era conhecida como Computação ou Informática, foi assim que tudo começou e desde então não parei mais, continuando nesta longa estrada até hoje. Desde 2001 tenho atuado como Database Administrator - Administrador de Banco de Dados - SQL Server em tarefas de Administração, Gerenciamento, Migração de Servidores e Bancos de Dados, Estratégias de Backup/Restauração, Replicação, LogShipping, Implantação de ERPs que utilizam bancos SQL Server, Desenvolvimento de Funções, Stored Procedure, Triggers. Experiência na Coordenação de Projetos de Alta Disponibilidade de Dados, utilizando Database Mirroring, Replicação Transacional e Merge, Log Shipping, para versões: 2000, 2005, 2008, 2008 R2, 2012 e 2014. Atualmente trabalho como Administrador de Banco de Dados no FIT - Instituto de Tecnologia da Flextronics, como também, Consultor em Projetos de Tunnig e Performance para clientes. Desde 2008 exerço a função de Professor Universitário, para as disciplinas de Banco de Dados, Administração, Modelagem de Banco de Dados, Programação em Banco de Dados, Sistemas Operacionais, Análise e Projetos de Sistemas, entre outras. Possuo titulação Oficial Microsoft MVP - SQL Server renovada desde 2007.

Um comentário em “Short Script – Março – 2014”

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