Script para limpar todas as tabelas do banco de dados.
- Deletar registros
- Limpar os Idenficadores (CHECKIDENT)
BEGIN TRAN
PRINT 'BEGIN TRAN'
DECLARE @Tabela VARCHAR(50)
DECLARE @DadosAdmin CHAR(1)
DECLARE @ReSeed CHAR(1)
DECLARE @SQL VARCHAR(1000)
-- DECLARA O CURSOR QUE VAI PASSA PELAS TABELAS
DECLARE tables_cursor CURSOR FOR
SELECT name
from sysobjects
where xtype = 'U'
AND name IN()
-- ABRE O CURSOR E CARREGA AS VARIÁVEIS COM OS DADOS DA PRIMEIRA TABELA
OPEN tables_cursor
FETCH NEXT FROM tables_cursor INTO @Tabela
-- LOOP PARA PERCORRER TODAS AS TABELAS PRESENTES NO CURSOR
WHILE @@FETCH_STATUS = 0
BEGIN
-- SCRIPT PARA DESABILITAR TRIGGERS E CONSTRAINTS
SET @SQL = '
------------------------------------------------------------------
ALTER TABLE ' + @Tabela + ' NOCHECK CONSTRAINT ALL
GO
ALTER TABLE ' + @Tabela + ' DISABLE TRIGGER ALL
GO
------------------------------------------------------------------
'
--EXEC(@SQL)
PRINT(@SQL)
FETCH NEXT FROM tables_cursor INTO @Tabela
END
-- FECHA O CURSOR PARA RESETAR O LOOP
CLOSE tables_cursor
PRINT '
------------------------------------------------------------------
------------------------------------------------------------------
------ FIM DA DESABILITAÇÃO DE TRIGGERS E CONSTRAINTS ------
------------------------------------------------------------------
------------------------------------------------------------------
'
-- ABRE NOVAMENTE O CURSOR PARA EFETUAR O SEGUNDO LOOP
OPEN tables_cursor
FETCH NEXT FROM tables_cursor INTO @Tabela
WHILE @@FETCH_STATUS = 0
BEGIN
-- DELETA OS REGISTROS DA TABELA
SET @SQL = '------------------------------------------------------------------
DELETE FROM ' + @Tabela
SET @ReSeed = '0'
-- HABILITA TRIGGERS E CONSTRAINTS
-- E RESETA A CONTAGEM SE A TABELA POSSUI UMA COLUNA IDENTITY
-- * SE A TABELA POSSUI DADOS DO ADMIN, A CONTAGEM DA IDENTITY RECEBE 1
-- PARA INICIAR EM 2 A PARTIR DO PRÓXIMO REGISTRO
SET @SQL = @SQL + '
GO
ALTER TABLE ' + @Tabela + ' CHECK CONSTRAINT ALL
GO
ALTER TABLE ' + @Tabela + ' ENABLE TRIGGER ALL
GO
IF OBJECTPROPERTY(OBJECT_ID(''' + @Tabela + '''), ''TableHasIdentity'') = 1
BEGIN
DBCC CHECKIDENT (''' + @Tabela + ''',RESEED,' + @ReSeed + ')
END
GO
------------------------------------------------------------------
'
--EXEC(@SQL)
PRINT(@SQL)
FETCH NEXT FROM tables_cursor INTO @Tabela
END
-- EXEC(@SQL)
PRINT (@SQL)
CLOSE tables_cursor
DEALLOCATE tables_cursor
ROLLBACK TRAN
Créditos: Tiago Bandeira
Nenhum comentário:
Postar um comentário