Pesquisa

terça-feira, 26 de outubro de 2010

Limpar banco de dados / tabelas

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