Arquivo

Archive for the ‘SQL Server 2008’ Category

SQL Day MT – Vamos bater um papo sobre Azure SQL Database e Inteligência artificial

E ai pessoas!!!!!!!

No próximo dia 08/12 estarei pela primeira vez em Cuiabá – MT para participar do SQLDay que está sendo organizado pela comunidade de SQL Server.

Quero convidar a todos para participar do workshop que farei sobre Inteligência Artificial, no qual discutiremos sobre o tema e também quais as funcionalidades existentes no Azure para implementarmos soluções práticas de IA.

Se ainda não fez sua inscrição, não perca tempo e clica AGORA no link https://www.e-inscricao.com/sqlmt/sqldaymt2018

Espero vocês no evento 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

#NATALNERD – NerdZão #75 – SQL Maniacs

Fala galera, tudo bem?

Sei que está um pouco em cima da hora, mas  quero convidá-los para participar do meetup que o SQLManiacs realizará com a galera do NERDZÃO, no dia 21/11 a partir das 19hs, na unidade da FIAP que fica na Av. Lins de Vasconcelos, 1264.

Para participar é só acessar o link https://www.meetup.com/Nerdzao/events/255089597/ e fazer sua inscrição.

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.

Treinamento – Mastering Your SQL Server Environment

E ai pessoal, tudo bem?

Já estão abertas as inscrições para o treinamento MASTERING YOUR SQL SERVER ENVIRONMENT que ministro pela Vita Database Solutions!!!!

Montei esse treinamento com o intuito de formar um profissinal diferenciado, que consiga analisar e discutir detalhadamente como funcionam todos os componentes existentes no SQL Server e como garantir que os recursos de hardware (CPU, Memória e Disco) sejam utilizados da melhor maneira possível.

Com os tópicos discutidos neste treinamento você estará 100% apto a planejar e implementar uma solução de banco de dados utilizando o SQL Server além de também poder executar tarefas mais complexas, tais como resolução de problemas (troubleshooting) e otimização de desempenho em um ambiente OnPremisse.

Também preciso adiantar que TODO o material foi revisado e atualizado para refletir as novidades do SQL Server 2017 e também do SQL Server 2019, então venha preparado para uma discussão de SQL Server Internals no mais alto nível!!!!!

Se quiser saber mais detalhes sobre o treinamento é só acessar https://www.vitadbsolutions.com/mastring-your-sql-server-environmen

Não deixe de aproveitar o descontaço de final de ano e mande logo um email para contato@vitadbsolutions.com para reservar a sua vaga.

Espero todos vocês no treinamento 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

Dicas para um DBA iniciante – Listar fragmentação de índices de todos os bancos de dados

Fala pessoal, tudo bem com vocês?

Hoje quero compartilhar mais um script muito útil que precisei utilizar recentemente no meu dia a dia como DBA SQL Server.

Esse script utiliza a stored procedure de sistema SP_MSFOREACHDB para executar uma verificação na fragmentação de todos os índices de cada uma das bases de dados existentes em sua instância de banco de dados SQL Server.

IF EXISTS (SELECT * FROM TEMPDB.SYS.ALL_OBJECTS WHERE 
			NAME LIKE '#bbc%' )
	DROP TABLE #bbc

CREATE TABLE #bbc
(
	DatabaseName VARCHAR(100),
	ObjectName VARCHAR(100),
	Index_id INT, 
	indexName VARCHAR(100),
	avg_fragmentation_percent FLOAT,
	IndexType VARCHAR(100),
	Action_Required VARCHAR(100) DEFAULT 'NA'
)
GO

INSERT INTO #bbc (
					DatabaseName,
					ObjectName,
					Index_id, 
					indexName,
					avg_fragmentation_percent,
					IndexType
				 )

EXEC MASTER.SYS.SP_MSFOREACHDB ' USE [?]

SELECT 
	db_name() as DatabaseName, 
	OBJECT_NAME (a.object_id) as ObjectName, 
	a.index_id, 
	b.name as IndexName, 
	avg_fragmentation_in_percent, 
	index_type_desc
FROM 
	sys.dm_db_index_physical_stats (db_id(), NULL, NULL, NULL, NULL) AS a
INNER JOIN 
	sys.indexes AS b 
ON 
	a.object_id = b.object_id 
AND 
	a.index_id = b.index_id
WHERE 
	b.index_id  0 
AND 
	avg_fragmentation_in_percent  0'
GO
 
UPDATE #bbc
SET Action_Required ='Rebuild'
WHERE avg_fragmentation_percent >30 
GO

UPDATE #bbc
SET Action_Required ='Reorganize'
WHERE avg_fragmentation_percent 5
GO

SELECT 
	* 
FROM 
	#bbc 
ORDER BY 
	#bbc.avg_fragmentation_percent 
DESC

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.

Gravação do WebCast – ARQUITETURA LAMBDA EM BIG DATA E PROCESSAMENTO EM TEMPO REAL COM STREAM ANALYTICS E POWER BI

Fala galera, tudo bem?

Já está disponível a gravação do webcast que tivemos no SQLManiacs, sobre a arquitetura Lambda e o processamento em tempo real com Stream Analytics.

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.

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.

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.