Como posso excluir todos os registros de todas as tabelas do meu banco de dados? Posso fazer isso com um comando SQL ou preciso de um comando SQL por uma tabela?
sql
sql-server
delete-row
multi-table-delete
AndreyAkinshin
fonte
fonte
EXEC sp_MSForEachTable 'DBCC CHECKIDENT(''?'', RESEED, 0)'
após o DELETE FROM para repor todas as colunas de identidade de volta a 0.DELETE failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'...
. Para mim trabalhou:EXEC sp_MSForEachTable 'SET QUOTED_IDENTIFIER ON; DELETE FROM ?'
Normalmente, usarei apenas o processo não documentado sp_MSForEachTable
Consulte também: Exclua todos os dados do banco de dados (quando você tiver FKs)
fonte
create database testing; GO use testing; create table t1 (i int primary key) create table t2(i int primary key,p int references t1)
fonte
Estou ciente de que é tarde, mas concordo com a sugestão de AlexKuznetsov de criar um script para o banco de dados, em vez de passar pelo incômodo de eliminar os dados das tabelas. Se a
TRUNCATE
solução não funcionar, e você tiver uma grande quantidade de dados, asDELETE
instruções de emissão (registradas) podem levar muito tempo e você ficará com identificadores que não foram reenviados (ou seja, umaINSERT
declaração em uma tabela com umaIDENTITY
coluna obteria um ID 50000 em vez de 1).Para criar um script de um banco de dados inteiro, no SSMS, clique com o botão direito do mouse no banco de dados e selecione
TASKS
->Generate scripts
:Clique
Next
para ignorar a tela de abertura do Assistente e selecione quais objetos você deseja criar scripts:Na
Set scripting options
tela, você pode escolher configurações para o script, como gerar 1 script para todos os objetos ou separar scripts para os objetos individuais e salvar o arquivo em Unicode ou ANSI:O assistente mostrará um resumo, que você pode usar para verificar se tudo está como desejado, e feche clicando em 'Concluir'.
fonte
Primeiro você terá que desativar todos os gatilhos:
Execute este script: (Retirado desta postagem Obrigado @SQLMenace)
Este script produzirá
DELETE
instruções na ordem correta. começando em tabelas referenciadas e depois fazendo referência aCopie as
DELETE FROM
instruções e execute-as uma vezativar gatilhos
Confirme as alterações:
fonte
Geralmente, é muito mais rápido criar scripts para todos os objetos no banco de dados e criar um vazio, para excluir ou truncar tabelas.
fonte
Abaixo um script que eu usei para remover todos os dados de um banco de dados do SQL Server
fonte
fonte
Como resposta alternativa, se você usa o Visual Studio SSDT ou possivelmente o Red Gate Sql Compare, você pode simplesmente executar uma comparação de esquema, fazer um script e descartar o banco de dados antigo (possivelmente faça um backup primeiro, caso exista um motivo que você precisará esses dados) e crie um novo banco de dados com o script criado pela ferramenta de comparação. Enquanto em um banco de dados muito pequeno isso pode dar mais trabalho, em um banco de dados muito grande, será muito mais rápido simplesmente descartá-lo e lidar com os diferentes gatilhos e restrições que possam estar no banco de dados.
fonte
Sim, é possível excluir com uma única linha de código
fonte