Short Script – Setembro – 2013

Salve, Salve, Comunidade!!!

Mais um ano se encerrando, meus deus, 2013 já esta ficando para ser contado como história.

Para não passar em branco e mantendo as minhas contribuições com a Comunidade Técnica, em especial com o Amantes do Microsoft SQL Server, vou compartilhar com vocês, mais uma relação de Short Scripts.

Como todos já devem saber, esta sessão tem o objetivo de compartilhar pequenos Códigos de Exemplo ou até mesmo Scripts, que visam ajudar ou exemplicar como podemos realizar determinadas atividades ou procedimentos no Microsoft SQL Server e seus principais recursos ou funcionalidades.

Na relação de hoje, gostaria de destacar os seguintes exemplos:

  • DMV – Sys.dm_os_workers;
  • DMV – Sys.dm_os Schedulers;
  • Extended Procedure – XP_Delete_File;
  • Function – Fn_VirtualFileStats;
  • Function – Fn_Trace_GetInfo;
  • Function – Fn_Trace_GetFilterInfor;
  • Function – LoginProperty; e
  • Max Worker Thread Limit;

Segue abaixo a relação de Short Scripts:

1 – Exemplo – Coletar Estatísticas de IO – Nível de Arquivos – fn_virtualfilestats

SELECT * FROM fn_virtualfilestats(1, 1);
SELECT * FROM sys.dm_io_virtual_file_stats(DB_ID(N’Master’), 1);

 

2 – Exemplo – Informações sobre Password + Função LoginProperty

SELECT  l.name,
 CAST(CASE sp.[state] WHEN N’D’ THEN 1 ELSE 0 END AS bit) AS DenyWindowsLogin,
 CASE WHEN N’U’ = l.type THEN 0
  WHEN N’G’ = l.type THEN 1
  WHEN N’S’ = l.type THEN 2
  WHEN N’C’ = l.type THEN 3
  WHEN N’K’ = l.type THEN 4 END AS LoginType,
 CAST(CASE WHEN (sp.[state] IS NULL) THEN 0 ELSE 1 END AS bit) AS HasAccess,
 CAST(sl.is_policy_checked AS bit) AS PasswordPolicyEnforced,
 CAST(sl.is_expiration_checked AS bit) AS PasswordExpirationEnabled,
 l.create_date AS CreateDate,
 l.modify_date AS DateLastModified,
 LOGINPROPERTY(l.name, N’BadPasswordCount’)  AS BadPasswordCount,
 LOGINPROPERTY(l.name, N’BadPasswordTime’)  AS BadPasswordTime,
 LOGINPROPERTY(l.name, N’DaysUntilExpiration’) AS DaysUntilExpiration,
 LOGINPROPERTY(l.name, N’IsExpired’)  AS IsExpired,
 LOGINPROPERTY(l.name, N’IsLocked’) AS IsLocked,
 LOGINPROPERTY(l.name, N’IsMustChange’) AS IsMustChange,
 LOGINPROPERTY(l.name, N’LockoutTime’) AS LockoutTime,
 LOGINPROPERTY(l.name, N’PasswordLastSetTime’) AS PasswordLastSetTime,
 l.is_disabled AS IsDisabled
FROM sys.server_principals AS l
  LEFT OUTER JOIN sys.server_permissions AS sp
  ON sp.grantee_principal_id = l.principal_id
   AND sp.[type] = N’COSQ’ — Connect permissions
  LEFT OUTER JOIN sys.sql_logins AS sl
  ON sl.principal_id = l.principal_id
  LEFT OUTER JOIN sys.credentials AS c
  ON c.credential_id = l.credential_id
WHERE
 l.[type] IN (‘U’, ‘G’, ‘S’, ‘C’, ‘K’)
 AND l.principal_id NOT BETWEEN 101 AND 255 — ##MS% certificates
 AND
 ( sp.[state] = N’D’  —  DenyWindowsLogin
  OR sp.[state] IS NULL — HasAccess
  OR CAST(sl.is_policy_checked AS bit) = 0
  OR CAST(sl.is_expiration_checked AS bit) = 0
  OR l.create_date > GETDATE()-1
  OR l.modify_date  > GETDATE()-1
  OR l.is_disabled > 0
  OR LOGINPROPERTY(l.name, N’DaysUntilExpiration’)<= 5
  OR LOGINPROPERTY(l.name, N’IsExpired’) > 0
  OR LOGINPROPERTY(l.name, N’IsLocked’) > 0
  OR LOGINPROPERTY(l.name, N’IsMustChange’) > 0
  OR LOGINPROPERTY(l.name, N’BadPasswordCount’)  > 2
 )

 

3 – Exemplo – Relação – Itens – Não Contados pelo Max Worker Thread Limit

;with cte as   
(   
       select   
              s.is_user_process,   
              w.worker_address,   
              w.is_preemptive,   
              w.state,   
              r.status,   
              t.task_state,   
              r.command,   
              w.last_wait_type,   
              t.session_id,   
              t.exec_context_id,   
              t.request_id   
       from sys.dm_exec_sessions s inner join sys.dm_exec_requests r   
                                                                  on s.session_id = r.session_id   
                                                                 inner join sys.dm_os_tasks t   
                                                                  on r.task_address = t.task_address   
                                                                 inner join sys.dm_os_workers w   
                                                                  on t.worker_address = w.worker_address   
       where s.is_user_process = 0   
)   

select is_user_process,command,   
            last_wait_type,   
            count(*) as cmd_cnt   
from cte   
group by is_user_process,command, last_wait_type   
order by cmd_cnt desc 

 

4  – Exemplo – Utilizando – Extended Procedure – XP_Delete_file

DECLARE @DateString CHAR(10)
SET @DateString = CONVERT(CHAR(10), DATEADD(d, -2, GETDATE()), 103)

EXECUTE master.dbo.xp_delete_file 0, N’E:\MSSQL2005-Backup\BaanModelEA’,N’bak’, @DateString, 1

 

5 – Exemplo – Utilizando – Funções – fn_trace_getinto + fn_trace_getfilterinfo

SELECT * FROM :: fn_trace_getinfo(DEFAULT)

SELECT * FROM :: fn_trace_getfilterinfo(4)

SELECT * FROM :: fn_trace_geteventinfo(4)

SELECT TextData,    ApplicationName,    SPID,    ServerName,    EventClass   FROM :: fn_trace_gettable(‘e:\trace2.trc’, DEFAULT)

 

6 – Exemplo – Utilizando – sys.dm_os_workers e sys.dm_os_schedulers

select scheduler_id,
            current_tasks_count,
            current_workers_count,
            active_workers_count,
            work_queue_count   
from sys.dm_os_schedulers   
where status = ‘Visible Online’
select is_preemptive,
            state,
            last_wait_type,
            count(*) as NumWorkers
from sys.dm_os_workers   
Group by state,last_wait_type,is_preemptive   
order by count(*) desc 
select last_wait_type,
            count(*) as NumRequests
from sys.dm_exec_requests   
group by last_wait_type   
order by count(*) desc
select  is_user_process,
             count(*) as RequestCount
from sys.dm_exec_sessions s  inner join sys.dm_exec_requests r   
                                                           on s.session_id = r.session_id   
group by is_user_process

 

Fique a vontade para realizar a código destes códigos, compartilhe com seus contatos, bem como, envie a sua opinião, sugestão ou crítica.

Nos encontramos em breve.

Até mais.

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 – Setembro – 2013”

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