[SQL Server] Script para deletar todos os registros de uma database

Segue um script que me tem sido muito útil quando estou testando e desenvolvendo um novo projeto de banco de dados. Ele tem um único objetivo: excluir todos os registros de todas as tabelas de uma determinada base. Basta você alterar o comando USE, de modo a apontar para o banco que você deseja. Apenas um detalhe: este script considera apenas o uso do esquema DBO. Portanto, se sua base utiliza outros esquemas, além do DBO, então você precisará ajustar.

use DBTest
GO

SET NOCOUNT ON;
DECLARE @sql varchar(4000);

— 0 – Recuperar a lista de constraints
DECLARE @tbl Table ( tabela varchar(500), restricao varchar(500) );

— 1 – Desabilitar constraints
insert INTO @tbl
SELECT
t.name, k.name
FROM sys.foreign_keys k
JOIN sys.tables t ON k.parent_object_id = t.object_id;
WHILE (select count(*) from @tbl) > 0
begin
select top 1 @sql = ‘ALTER TABLE dbo.’ + t.tabela + ‘ nocheck constraint ‘ + t.restricao + ‘;’
from @tbl t;
delete TOP(1) FROM @tbl;
EXEC(@sql);
END;

— 2 – Truncar
EXEC sys.sp_MSforeachtable ‘DELETE FROM ?’;

— 3 – Reabilita as constraints
insert INTO @tbl
SELECT
t.name, k.name
FROM sys.foreign_keys k
JOIN sys.tables t ON k.parent_object_id = t.object_id;
WHILE (select count(*) from @tbl) > 0
begin
select top 1 @sql = ‘ALTER TABLE dbo.’ + t.tabela + ‘ check constraint ‘ + t.restricao + ‘;’
from @tbl t;
delete TOP(1) FROM @tbl;
–print @sql;
EXEC(@sql);
END;


6 Comentários on “[SQL Server] Script para deletar todos os registros de uma database”

  1. Leonardo Mqs disse:

    Caraca velho, muito show isso aqui ein. Dá até pra adaptar ele para desabilitar constraints em um pacote do SSIS.

  2. Adeilson Brito disse:

    Fala Leonardo. É isso mesmo camarada: você pode usar para fazer os processos de ETL. Isso vai acelerar a importação.

  3. George Almeida Melo disse:

    poxa muito bom adeilson, estou criando um projeto e fiz varios testes e agora preciso limpar o BD. muito bom script.

    Ha cara voce tem algum conhecimento sobre BI? to fazendo meu TCC sobre BI se vc tiver algo que possa me encaminhar ou até mesmo alguma indicação de livro.

  4. Adeilson Brito disse:

    Fala George,

    Rapaz trabalho com esse negócio de BI (rs) no dia a dia. Vou ver um material pra vc e te passo depois. Em breve estarei abordando uma série de posts aqui no blog. Vai acompanhando.

  5. George Almeida Melo disse:

    vlw então brother!!!

  6. […] Vejam também: [SQL Server] Script para deletar todos os registros de uma database […]


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s