Ajude o site desativando o bloqueador de anúncio
Cabeçalho

SQLServer, criar script de backup de indice, create para tabela de backup

Autor: Eurai Criado: 19/12/2025 Atualizado: 19/12/2025 SQLServer
Postagem

✨ 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

ASSINE A NEWSLETTER

Cadastrando...

PIX uDesenv

PIX QR Code para depósito

Clique para doar

Parceiros

Tudo em ADVPL - Blog parceiro

Blog ADVPL