✨ SQL Server — Script de Backup de Índices e CREATE para Tabela de Backup ⚙️📦
Salve, salve! 👋😄 Hoje a dica é para quem trabalha com SQL Server e precisa gerar rapidamente o script de criação de índices para uma tabela de backup, mantendo performance, estrutura e organização do banco. 🚀
Esse cenário é muito comum em auditorias, comparações de dados, ambientes de homologação ou restauração pontual. Com o script abaixo, você consegue extrair automaticamente todos os índices da tabela original e recriá-los em uma tabela espelho. 🧠📊
📌 Para gerar o script de criação dos índices:
SELECT
'CREATE ' COLLATE DATABASE_DEFAULT +
CASE
WHEN i.is_unique = 1
THEN 'UNIQUE '
ELSE ''
END COLLATE DATABASE_DEFAULT +
i.type_desc COLLATE DATABASE_DEFAULT +
' INDEX ' COLLATE DATABASE_DEFAULT +
i.name COLLATE DATABASE_DEFAULT +
' ON SX3010_20251219 (' COLLATE DATABASE_DEFAULT +
-- Colunas do índice
STUFF((
SELECT ', ' + c2.name COLLATE DATABASE_DEFAULT
FROM sys.index_columns ic2
JOIN sys.columns c2
ON ic2.object_id = c2.object_id
AND ic2.column_id = c2.column_id
WHERE ic2.object_id = i.object_id
AND ic2.index_id = i.index_id
AND ic2.is_included_column = 0
ORDER BY ic2.key_ordinal
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 2, '') +
')' COLLATE DATABASE_DEFAULT +
-- INCLUDE (se existir)
CASE
WHEN EXISTS (
SELECT 1
FROM sys.index_columns ic3
WHERE ic3.object_id = i.object_id
AND ic3.index_id = i.index_id
AND ic3.is_included_column = 1
)
THEN ' INCLUDE (' COLLATE DATABASE_DEFAULT +
STUFF((
SELECT ', ' + c3.name COLLATE DATABASE_DEFAULT
FROM sys.index_columns ic3
JOIN sys.columns c3
ON ic3.object_id = c3.object_id
AND ic3.column_id = c3.column_id
WHERE ic3.object_id = i.object_id
AND ic3.index_id = i.index_id
AND ic3.is_included_column = 1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 2, '') +
')' COLLATE DATABASE_DEFAULT
ELSE ''
END AS CreateIndexScript
FROM sys.indexes i
WHERE i.object_id = OBJECT_ID('SX3010')
AND i.type_desc <> 'HEAP'
AND i.is_primary_key = 0;
💡 Dica extra: Esse script é perfeito para cenários de backup lógico, comparação de tabelas, EXCEPT / INTERSECT e também para evitar perda de performance após copiar grandes volumes de dados. ⚡
Gostou da dica? 🤘 Compartilhe com a galera dev, DBAs e analistas de sistemas e deixe seu comentário! 😎🚀
Um abraço e até a próxima! 👋✨
#SQLServer #TSQL #DBA #BancoDeDados #PerformanceSQL #Indices #BackupDeDados #AdministracaoDeBanco #Desenvolvimento #Tecnologia #DataBase