Arquivo

Archive for the ‘SQL Server 2016’ Category

Dicas para um DBA Iniciante – Listando os principais Wait Types da instância

Fala pessoas!!!!!

A dica de hoje é para ajudá-los a encontrar os principais wait types existentes em seu ambiente de banco de dados.

Esta consultar foi escrita pelo time do SQLSkills e é bem completa, pois já retorna também o link para a documentação escrita pelo Paul Randal e que explica minuciosamente cada um dos wait types encontrados e como resolvê-los.

WITH [Waits] 
     AS (SELECT [wait_type], 
                [wait_time_ms] / 1000.0                             AS [WaitS], 
                ( [wait_time_ms] - [signal_wait_time_ms] ) / 1000.0 AS 
                [ResourceS], 
                [signal_wait_time_ms] / 1000.0                      AS [SignalS] 
                , 
                [waiting_tasks_count] 
                AS [WaitCount], 
                100.0 * [wait_time_ms] / Sum ([wait_time_ms]) 
                                           OVER()                   AS 
                [Percentage], 
                Row_number() 
                  OVER( 
                    ORDER BY [wait_time_ms] DESC)                   AS [RowNum] 
         FROM   sys.dm_os_wait_stats 
         WHERE  [wait_type] NOT IN ( 
        N'BROKER_EVENTHANDLER', N'BROKER_RECEIVE_WAITFOR', 
        N'BROKER_TASK_STOP', 
                           N'BROKER_TO_FLUSH', 
                     N'BROKER_TRANSMITTER', N'CHECKPOINT_QUEUE', 
        N'CHKPT', 
                             N'CLR_AUTO_EVENT', 
                     N'CLR_MANUAL_EVENT', N'CLR_SEMAPHORE', 
                     -- Maybe uncomment these four if you have mirroring issues 
                     N'DBMIRROR_DBM_EVENT', N'DBMIRROR_EVENTS_QUEUE', 
                     N'DBMIRROR_WORKER_QUEUE', N'DBMIRRORING_CMD', 
                             N'DIRTY_PAGE_POLL', 
        N'DISPATCHER_QUEUE_SEMAPHORE', 
                     N'EXECSYNC', N'FSAGENT', 
        N'FT_IFTS_SCHEDULER_IDLE_WAIT', 
                             N'FT_IFTSHC_MUTEX', 
                     -- Maybe uncomment these six if you have AG issues 
                     N'HADR_CLUSAPI_CALL', 
        N'HADR_FILESTREAM_IOMGR_IOCOMPLETION' 
                             , 
        N'HADR_LOGCAPTURE_WAIT', 
        N'HADR_NOTIFICATION_DEQUEUE', 
                     N'HADR_TIMER_TASK', N'HADR_WORK_QUEUE', 
        N'KSOURCE_WAKEUP', 
                             N'LAZYWRITER_SLEEP' 
                                                , 
                     N'LOGMGR_QUEUE', N'MEMORY_ALLOCATION_EXT', 
                             N'ONDEMAND_TASK_QUEUE', 
        N'PREEMPTIVE_XE_GETTARGETSTATE', 
                     N'PWAIT_ALL_COMPONENTS_INITIALIZED', 
                             N'PWAIT_DIRECTLOGCONSUMER_GETNEXT', 
        N'QDS_PERSIST_TASK_MAIN_LOOP_SLEEP' 
        , 
                                                N'QDS_ASYNC_QUEUE', 
                     N'QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP', 
        N'QDS_SHUTDOWN_QUEUE', 
        N'REDO_THREAD_PENDING_WORK', 
        N'REQUEST_FOR_DEADLOCK_SEARCH', 
                     N'RESOURCE_QUEUE', N'SERVER_IDLE_CHECK', 
        N'SLEEP_BPOOL_FLUSH', 
                                                N'SLEEP_DBSTARTUP', 
                     N'SLEEP_DCOMSTARTUP', N'SLEEP_MASTERDBREADY', 
        N'SLEEP_MASTERMDREADY', 
                                                N'SLEEP_MASTERUPGRADED', 
                     N'SLEEP_MSDBSTARTUP', N'SLEEP_SYSTEMTASK', 
        N'SLEEP_TASK', 
                                                N'SLEEP_TEMPDBSTARTUP', 
                     N'SNI_HTTP_ACCEPT', N'SP_SERVER_DIAGNOSTICS_SLEEP', 
        N'SQLTRACE_BUFFER_FLUSH', 
        N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP', 
                     N'SQLTRACE_WAIT_ENTRIES', N'WAIT_FOR_RESULTS', 
        N'WAITFOR', 
                                                N'WAITFOR_TASKSHUTDOWN', 
                     N'WAIT_XTP_RECOVERY', N'WAIT_XTP_HOST_WAIT', 
        N'WAIT_XTP_OFFLINE_CKPT_NEW_LOG', 
                                                N'WAIT_XTP_CKPT_CLOSE', 
                     N'XE_DISPATCHER_JOIN', N'XE_DISPATCHER_WAIT', 
        N'XE_TIMER_EVENT' ) 
                AND [waiting_tasks_count] > 0) 
SELECT Max ([W1].[wait_type]) 
       AS 
       [WaitType], 
       Cast (Max ([W1].[waits]) AS DECIMAL (16, 2)) 
       AS [Wait_S], 
       Cast (Max ([W1].[resources]) AS DECIMAL (16, 2)) 
       AS [Resource_S], 
       Cast (Max ([W1].[signals]) AS DECIMAL (16, 2)) 
       AS [Signal_S], 
       Max ([W1].[waitcount]) 
       AS [WaitCount], 
       Cast (Max ([W1].[percentage]) AS DECIMAL (5, 2)) 
       AS [Percentage], 
       Cast (( Max ([W1].[waits]) / Max ([W1].[waitcount]) ) AS DECIMAL (16, 4)) 
       AS 
       [AvgWait_S], 
       Cast (( Max ([W1].[resources]) / Max ([W1].[waitcount]) ) AS 
             DECIMAL (16, 4)) AS 
       [AvgRes_S], 
       Cast (( Max ([W1].[signals]) / Max ([W1].[waitcount]) ) AS 
             DECIMAL (16, 4))   AS 
       [AvgSig_S], 
       Cast ('https://www.sqlskills.com/help/waits/' 
             + Max ([W1].[wait_type]) AS XML) 
       AS [Help/Info URL] 
FROM   [Waits] AS [W1] 
       INNER JOIN [Waits] AS [W2] 
               ON [W2].[rownum] <= [W1].[rownum] 
GROUP  BY [W1].[rownum] 
HAVING Sum ([W2].[percentage]) - Max([W1].[percentage]) < 95; -- percentage threshold 

Espero que gostem e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço a todos.

Anúncios

Dicas para um DBA Iniciante – Estimativa de crescimento do banco de dados

E ai pessoal!!!!!

Hoje quero compartilhar com vocês um script que utilizo para estimar qual a taxa de crescimento de um banco de dados através dos tamanhos dos seus backups.

 

DECLARE @endDate datetime, @months smallint;
SET @endDate = GetDate();  -- Include in the statistic all backups from today
SET @months = 6;           -- back to the last 6 months.

;WITH HIST AS
   (SELECT BS.database_name AS DatabaseName
          ,YEAR(BS.backup_start_date) * 100
           + MONTH(BS.backup_start_date) AS YearMonth
          ,CONVERT(numeric(10, 1), MIN(BF.file_size / 1048576.0)) AS MinSizeMB
          ,CONVERT(numeric(10, 1), MAX(BF.file_size / 1048576.0)) AS MaxSizeMB
          ,CONVERT(numeric(10, 1), AVG(BF.file_size / 1048576.0)) AS AvgSizeMB
    FROM msdb.dbo.backupset as BS
         INNER JOIN
         msdb.dbo.backupfile AS BF
             ON BS.backup_set_id = BF.backup_set_id
    WHERE NOT BS.database_name IN
              ('master', 'msdb', 'model', 'tempdb')
          AND BF.file_type = 'D'
          AND BS.backup_start_date BETWEEN DATEADD(mm, - @months, @endDate) AND @endDate
    GROUP BY BS.database_name
            ,YEAR(BS.backup_start_date)
            ,MONTH(BS.backup_start_date))
SELECT MAIN.DatabaseName
      ,MAIN.YearMonth
      ,MAIN.MinSizeMB
      ,MAIN.MaxSizeMB
      ,MAIN.AvgSizeMB
      ,MAIN.AvgSizeMB 
       - (SELECT TOP 1 SUB.AvgSizeMB
          FROM HIST AS SUB
          WHERE SUB.DatabaseName = MAIN.DatabaseName
                AND SUB.YearMonth < MAIN.YearMonth
          ORDER BY SUB.YearMonth DESC) AS GrowthMB
FROM HIST AS MAIN
ORDER BY MAIN.DatabaseName
        ,MAIN.YearMonth

Espero que gostem e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço a todos.

Dicas para um DBA Iniciante – Listar deadlocks utilizando a system_health

Fala galera, tudo bem com vocês?

Muita gente tem pedido para compartilhar os principais scripts que utilizo para gerenciar um ambiente de banco de dados SQL Server e por isso montei uma lista com os que são mais úteis.

O script de hoje é referente a monitoração de Deadlocks (que encontrei no site do Pinal Dave) e é extremamente útil porque utiliza a sessão de sistema system_health, dos extended events.

 
SELECT XEvent.query('(event/data/value/deadlock)[1]') AS DeadlockGraph
FROM (
    SELECT XEvent.query('.') AS XEvent
    FROM (
        SELECT CAST(target_data AS XML) AS TargetData
        FROM sys.dm_xe_session_targets st
        INNER JOIN sys.dm_xe_sessions s ON s.address = st.event_session_address
        WHERE s.NAME = 'system_health'
            AND st.target_name = 'ring_buffer'
        ) AS Data
CROSS APPLY TargetData.nodes('RingBufferTarget/event[@name="xml_deadlock_report"]') AS XEventData(XEvent)
) AS source;

Espero que gostem e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço a todos.

Webcast – SQL SERVER HATES YOU(?) – WHAT THE DBAS NEVER TOLD THE DEVELOPERS

Fala pessoal!!!!!!

No próximo dia 18/06, à partir das 17h00, teremos um webcast muito bacana com o Alexander Arvidsson, no qual teremos várias dicas para quem desenvolve utilizando o SQL Server.

Não deixe esse oportunidade passar e faça sua inscrição através do link https://www.sympla.com.br/sql-server-hates-you—what-the-dbas-never-told-the-developers__307231.

Espero a participação de todos e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço a todos.

Intelligent Cloud Conference – Vamos falar de Azure em Copenhagen!!!!!

Fala pessoas!!!!!

Quero compartilhar com vocês mais um grande evento que farei parte como um dos palestrantes e esse acontecerá na Dinamarca!!!!!!

No próximo dia 29/05 falarei de Elastic Pools no Intelligent Cloud Conference, um evento que contará com grandes especialistas em Azure e tecnologias em nuvem.

Com certeza farei o máximo para levar um excelente conteúdo aos particpantes e mostrar que no Brasil temos uma fortíssima comunidade técnica.

Quer agradecer a todos que acompanham as publicação e caso ainda não sejam um SQLMANIAC, não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço a todos.

SQL Saturday #738 – E lá vamos nós para Israel falar mais um pouco sobre SQLDW

E ai pessoas!!!!!!

Tudo bem com vocês?

Hoje quero compartilhar com vocês essa grande chance de poder participar de um SQL Saturday realizado no Oriente Médio, mais especificamente em Israel.

Tentarei ao máximo trazer todos os detalhes dessa experiência inesquecível e dividir cada momento com todos vocês, além de acompanhar palestras de altíssimo nível, não é mesmo?

Valeu galera e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço a todos.

Webcast – COSMOS DB FOR SQL SERVER PROS

E ai pessoas!!!!!

Já está disponível a gravação do webcast COSMOS DB FOR SQL SEREVR PROS, apresentado pelo Warner Chavez no último dia 12/04.

Espero que gostem e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço a todos.