Ideia central

O ecossistema SQL Server possui ferramentas para desenvolvimento, administração, monitoramento e diagnóstico. Conhecer as opções disponíveis, tanto da Microsoft quanto da comunidade, é fundamental para trabalhar com eficiência.

SSMS: SQL Server Management Studio

Ferramenta gráfica principal da Microsoft para administração e desenvolvimento. Gratuita, Windows-only.

Funcionalidades principais:

  • Object Explorer: navegar pela instância, bancos, tabelas, SPs, jobs
  • Query Editor com IntelliSense, planos de execução gráficos, resultados em grid
  • Activity Monitor: sessões, I/O, CPU, waits em tempo real
  • SQL Server Agent: criar e gerenciar jobs de manutenção
  • Database Diagrams: diagrama visual do schema
  • Import/Export Wizard: ETL simples via wizard
  • Backup/Restore via interface gráfica
  • Always On Dashboard: monitoramento de Availability Groups

Atalhos indispensáveis:

AtalhoAção
F5Executar query (ou seleção)
Ctrl+LVer plano de execução estimado
Ctrl+MHabilitar plano de execução real
Ctrl+K, Ctrl+CComentar seleção
Ctrl+K, Ctrl+UDescomentar seleção
Ctrl+RMostrar/ocultar painel de resultados
Alt+F1 (fn+F1)sp_help sobre o objeto selecionado
Ctrl+Shift+LConverter seleção para minúsculas
Ctrl+F5Parse (verificar sintaxe sem executar)

Azure Data Studio

Editor de código moderno (baseado no VS Code), multiplataforma (Windows, Mac, Linux). Indicado para desenvolvedores e quem trabalha com Azure SQL / SQL Server containers.

Vantagens sobre SSMS:

  • Multiplataforma
  • Notebooks SQL (mistura SQL com markdown, ótimo para documentar análises)
  • Extensões (GitHub Copilot, SandDance para visualizações, etc.)
  • Terminal integrado
  • Source control integrado (Git)

Limitações: não tem todas as funcionalidades de administração do SSMS (Agent, full HA management, etc.)


Dynamic Management Views (DMVs)

Views e funções do sistema que expõem o estado interno do SQL Server, a ferramenta mais poderosa de diagnóstico sem instalar nada extra.

-- Top queries por CPU
SELECT TOP 10
    qs.total_worker_time / qs.execution_count AS avg_cpu,
    qs.execution_count,
    SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
        ((qs.statement_end_offset - qs.statement_start_offset)/2)+1) AS query_text
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY avg_cpu DESC;
 
-- Top queries por I/O lógico
SELECT TOP 10
    total_logical_reads / execution_count AS avg_logical_reads,
    execution_count,
    SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
        ((qs.statement_end_offset - qs.statement_start_offset)/2)+1) AS query_text
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY avg_logical_reads DESC;
 
-- Wait statistics (o que o servidor está esperando)
SELECT TOP 20
    wait_type,
    wait_time_ms / 1000.0 AS wait_seconds,
    waiting_tasks_count,
    wait_time_ms / waiting_tasks_count AS avg_wait_ms
FROM sys.dm_os_wait_stats
WHERE wait_type NOT IN ( -- filtrar waits benignos
    'SLEEP_TASK','BROKER_TO_FLUSH','BROKER_TASK_STOP','CLR_AUTO_EVENT',
    'DISPATCHER_QUEUE_SEMAPHORE','FT_IFTS_SCHEDULER_IDLE_WAIT',
    'HADR_WORK_QUEUE','HADR_FILESTREAM_IOMGR_IOCOMPLETION',
    'ONDEMAND_TASK_QUEUE','REQUEST_FOR_DEADLOCK_MONITOR',
    'RESOURCE_QUEUE','SERVER_IDLE_CHECK','SLEEP_DBSTARTUP',
    'SLEEP_DCOMSTARTUP','SLEEP_MASTERDBREADY','SLEEP_MASTERMDREADY',
    'SLEEP_MASTERUPGRADED','SLEEP_MSDBSTARTUP','SLEEP_SYSTEMTASK',
    'SLEEP_TEMPDBSTARTUP','SNI_HTTP_ACCEPT','SP_SERVER_DIAGNOSTICS_SLEEP',
    'SQLTRACE_BUFFER_FLUSH','WAITFOR','LOGMGR_QUEUE','CHECKPOINT_QUEUE',
    'XE_DISPATCHER_WAIT','XE_TIMER_EVENT','BROKER_EVENTHANDLER',
    'RESOURCE_GOVERNOR_IDLE','XE_DISPATCHER_JOIN'
)
ORDER BY wait_time_ms DESC;
 
-- Índices faltantes sugeridos pelo otimizador
SELECT TOP 20
    ROUND(migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans), 0) AS score,
    migs.last_user_seek,
    mid.statement AS tabela,
    mid.equality_columns,
    mid.inequality_columns,
    mid.included_columns
FROM sys.dm_db_missing_index_group_stats migs
JOIN sys.dm_db_missing_index_groups mig ON migs.group_handle = mig.index_group_handle
JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle
ORDER BY score DESC;

SQL Server Profiler / Extended Events

SQL Server Profiler é a ferramenta gráfica legada para captura de eventos (deprecated, mas ainda funcional). Extended Events (XE) é o substituto moderno, mais leve e poderoso.

-- Criar session de Extended Events para capturar queries lentas
CREATE EVENT SESSION [QuerysLentas] ON SERVER
ADD EVENT sqlserver.sql_statement_completed (
    WHERE duration > 1000000  -- > 1 segundo (em microssegundos)
    ACTION (sqlserver.sql_text, sqlserver.database_name, sqlserver.username)
)
ADD TARGET package0.ring_buffer (SET max_memory = 51200)
WITH (MAX_DISPATCH_LATENCY = 5 SECONDS);
 
-- Iniciar a session
ALTER EVENT SESSION [QuerysLentas] ON SERVER STATE = START;

sp_WhoIsActive

Script open source de Adam Machanic, o melhor substituto para sp_who e sp_who2. Mostra sessões ativas com query, wait type, bloqueios, plano de execução, duração, etc.

-- Instalação: baixar de http://whoisactive.com e executar no master
EXEC sp_WhoIsActive @get_plans = 1, @get_locks = 1;

Brent Ozar’s First Responder Kit

Conjunto de scripts open source amplamente adotados pela comunidade:

SPFunção
sp_BlitzChecklist de saúde da instância, encontrando problemas de configuração
sp_BlitzFirstDiagnóstico de performance em tempo real (waits, queries)
sp_BlitzCacheAnalisa o plan cache: top queries por CPU/IO/memória
sp_BlitzIndexAnalisa índices: faltando, duplicados, não usados
sp_BlitzLockAnalisa deadlocks e histórico de bloqueios
-- Verificação rápida de saúde
EXEC sp_Blitz @CheckUserDatabaseObjects = 1;
 
-- Top queries por CPU
EXEC sp_BlitzCache @SortOrder = 'cpu';
 
-- Análise de índices de uma tabela
EXEC sp_BlitzIndex @TableName = 'pedidos';

Download: https://www.brentozar.com/first-aid/


Ola Hallengren Maintenance Solution

Scripts de manutenção amplamente usados em produção:

  • IndexOptimize: rebuild/reorganize inteligente baseado na fragmentação real
  • DatabaseBackup: backup com verificação e limpeza automática
  • DatabaseIntegrityCheck: DBCC CHECKDB agendado com alertas

Download: https://ola.hallengren.com/

Conexões

Referências