Informações Úteis sobre SQL Server (Microsoft)
Olá, tudo bem? 👋
Abaixo segue uma coletânea de comandos, diagnósticos e boas práticas relacionadas ao SQL Server, Windows e ADVPL.
📊 Estatísticas do SQL Server
SET STATISTICS IO ON
SET STATISTICS IO OFF
SET STATISTICS TIME ON
SET STATISTICS TIME OFF
SET STATISTICS IO,TIME ON
SET STATISTICS IO,TIME OFF
🛡️ Anti-vírus
- Desabilitar durante a instalação do Protheus
- Extensões a considerar:
🗄️ SQL Server / Banco de Dados
- Versão do SQL Server
SELECT @@VERSION AS VERSION
- Collation do Banco
SELECT DATABASEPROPERTYEX('UDESENV_12_1_25','Collation')
- Collation da Instalação
SELECT SERVERPROPERTY(N'Collation')
- Teste de Collation para performance (LIKE)
WHERE HISTORICO COLLATE Latin1_General_BIN LIKE '%Eurai%'
-- ou
WHERE HISTORICO COLLATE SQL_Latin1_general_CP1_CI_AI LIKE '%Eurai%'
Enviado por: Fabricio Lima – Power Tuning
- Exemplo de INNER JOIN com Collation
SELECT F3_NFISCAL, RIGHT(RTRIM(SP51.NFSE_ID),6), NFSE_ID, *
FROM DATA_SPED.dbo.SPED051 SP51
INNER JOIN SF3000 SF3
ON LEFT(SP51.NFSE_ID,3) COLLATE Latin1_General_BIN2 = SF3.F3_SERIE
AND RIGHT(RTRIM(SP51.NFSE_ID),6) COLLATE Latin1_General_BIN2 = SF3.F3_NFISCAL
WHERE SP51.ID_ENT = 'XXXXXX'
AND SP51.D_E_L_E_T_ = ''
AND SP51.NFSE = 'XX22'
- WhoIsActive – Monitoramento
- Download oficial
- Permite monitorar e investigar consultas lentas.
- dbAccess também permite rastrear.
- TempDB – Boas Práticas
- Problemas de PAGELATCH no monitoramento
- Recomendado: até 8 arquivos
- Tamanho inicial: 1 GB
- Crescimento: 800 MB
- Build Numbers SQL Server
- Max Degree of Parallelism
- Recomendado: metade dos processadores lógicos (máx. 8)
- Cost Threshold for Parallelism
- Sugestão: entre 25 e 50 (padrão recomendado: 35)
- Rotação do ErrorLog
EXEC sp_cycle_errorlog
- Recomendação: manter 20 arquivos
- Instant File Initialization (IFI)
- Evita formatação completa do .MDF
- Abrir: secpol.msc
- Local Security Policy → User Rights Assignment → Perform volume maintenance tasks
- Adicionar: NT Service\MSSQLServer
- Necessário reiniciar o serviço SQL Server
- Check Mail – Log de envio
SELECT TOP 10 sent_status, *
FROM msdb.dbo.sysmail_unsentitems
ORDER BY send_request_date DESC;
SELECT TOP 10 sent_status, *
FROM msdb.dbo.sysmail_mailitems
ORDER BY send_request_date DESC;
- Configurações adicionais
- User sysadmin → dba
- Page verify: Checksum
- AutoClose = OFF
- AutoShrink = OFF
📧 Testar Envio de E-mail (T-SQL)
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'test',
@recipients = '[email protected];[email protected];',
@subject = 'WWW',
@body = 'abc',
@body_format = 'HTML';
🪟 Windows – Boas Práticas
- Desfragmentação automática
- SO virtualizado
- Modo de energia: Alto Desempenho
💻 ADVPL – Funções Úteis
- FWFileReader – leitura de arquivos
- FWFileWriter – gravação de arquivos
- FWBulk – inserção em massa
- tXMLManager – parser XML (case-sensitive)
- Conversão Array / Hash → JsonObject
- FWExecCachedQuery – cache de consultas
- FWPreparementStatement
- MPSysOpenQuery()
- FWExecStatement – nativo + proteção contra SQL Injection
- MpSysExecScalar – retorna somente 1 valor
🌐 REST – Instances
- Instances = inicial, máximo, mínimo livre, incremento
- Exemplo 1:
Instances = 1,10,1,1
Inicia com 1 thread, máximo 10, tenta manter sempre 1 livre.
- Exemplo 2:
Instances = 1,20,2,5
Inicia com 1 thread, máximo 20, tenta manter 2 livres e sobe 5 por vez.
⚙️ Instant File Initialization – Verificar Status
SELECT servicename, instant_file_initialization_enabled
FROM sys.dm_server_services
WHERE servicename LIKE 'SQL Server (%';
🚀 Migração 2210 – Pontos Importantes
- Profile causando lentidão – recriar do zero ajudou.
- Funções com COUNT padrão — ajustar melhora performance.
- ExecAutos lentos:
- Pode ter relação com CTBLoadCQD
- Verificar compartilhamentos das tabelas contábeis
- Documentação TOTVS
🤝 Finalização
Gostou do conteúdo? Compartilhe com seus amigos e deixe um comentário! 😎
Um abraço e até a próxima!