Como excluir todas as linhas de todas as tabelas em um banco de dados do SQL Server?
sql-server-2005
Michał Powaga
fonte
fonte
Respostas:
Observe que TRUNCATE não funcionará se você tiver qualquer integridade referencial definida.
Nesse caso, isso funcionará:
fonte
USE [MyDataBase]
:? A idéia acima funcionaria, se adaptada de alguma forma? ... Porque eu não quero excluir todos os bancos de dados mantidos pelo servidor SQL.Em meu projeto recente, minha tarefa era limpar um banco de dados inteiro usando a instrução sql e cada tabela com muitas restrições, como Chave Primária e Chave Estrangeira. Existem mais de 1000 tabelas no banco de dados, portanto, não é possível gravar uma consulta de exclusão em cada tabela.
Usando um procedimento armazenado chamado sp_MSForEachTable, que permite processar facilmente algum código em todas as tabelas em um único banco de dados. Isso significa que é usado para processar um único comando T-SQL ou um comando T-SQL diferente em todas as tabelas do banco de dados.
Portanto, siga as etapas abaixo para truncar todas as tabelas em um banco de dados do SQL Server:
Etapa 1 - Desative todas as restrições no banco de dados usando a consulta sql abaixo:
EXEC sys.sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
Etapa 2- Execute uma operação Excluir ou truncar em cada tabela do banco de dados usando o comando sql abaixo:
Etapa 3- Habilite todas as restrições no banco de dados usando a instrução sql abaixo:
fonte
sql server azure
?Eu tive que excluir todas as linhas e fiz isso com o próximo script:
Espero que isto ajude!
fonte
Aqui está uma solução que:
INFORMATION_SCHEMA.TABLES
para um banco de dados específicoSELECTS
tabelas com base em alguns critérios de pesquisasysdiagrams
e__RefactorLog
Inicialmente
EXECUTE sp_MSforeachtable 'TRUNCATE TABLE ?'
, tentei , mas isso excluiu meus diagramas.fonte
ALTER TABLE
bit para desativar as restrições falha.No meu caso, eu precisava ativar QUOTED_IDENTIFIER. Isso levou a uma ligeira modificação na resposta de Mark Rendle acima:
fonte
DELETE failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.
fonte
Você pode excluir todas as linhas de todas as tabelas usando uma abordagem como sugerida por Rubens, ou simplesmente soltar e recriar todas as tabelas. Sempre é uma boa idéia ter os scripts de criação de banco de dados completos de qualquer maneira, para que esse seja o método mais fácil / rápido.
fonte
Para alguns requisitos, podemos ter que pular determinadas tabelas. Eu escrevi o script abaixo para adicionar algumas condições extras para filtrar a lista de tabelas. O script abaixo também exibirá a contagem de pré-exclusão e a contagem de pós-exclusão.
fonte
Essa resposta se baseia na resposta de Zach Smith, redefinindo a coluna de identidade também:
Aqui está a consulta:
fonte
fonte
se você deseja excluir a tabela inteira, siga as próximas instruções SQL
fonte