Как я могу удалить все записи из всех таблиц моей базы данных? Могу ли я сделать это с помощью одной команды SQL или мне нужно по одной команде SQL на одну таблицу?
sql
sql-server
delete-row
multi-table-delete
AndreyAkinshin
источник
источник
EXEC sp_MSForEachTable 'DBCC CHECKIDENT(''?'', RESEED, 0)'
после DELETE FROM, чтобы сбросить все столбцы идентификаторов обратно на 0.DELETE failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'...
. У меня сработало:EXEC sp_MSForEachTable 'SET QUOTED_IDENTIFIER ON; DELETE FROM ?'
Обычно я просто использую недокументированную процедуру sp_MSForEachTable
См. Также: Удалить все данные в базе данных (если у вас есть FK)
источник
create database testing; GO use testing; create table t1 (i int primary key) create table t2(i int primary key,p int references t1)
источник
Я знаю, что это поздно, но я согласен с предложением Алекса Кузнецова создать сценарий для базы данных, а не пытаться очистить данные из таблиц. Если
TRUNCATE
решение не сработает и у вас есть большой объем данных, выдача (записанных)DELETE
операторов может занять много времени, и вы останетесь с идентификаторами, которые не были повторно заполнены (т. Е.INSERT
Оператор в таблице сIDENTITY
столбец получит вам идентификатор 50000. вместо идентификатора 1).Чтобы создать сценарий для всей базы данных, в SSMS щелкните базу данных правой кнопкой мыши и выберите
TASKS
->Generate scripts
:Щелкните,
Next
чтобы пропустить открывающийся экран мастера, а затем выберите объекты, для которых нужно создать сценарий:На
Set scripting options
экране вы можете выбрать параметры сценария, например, создать ли 1 сценарий для всех объектов или отдельные сценарии для отдельных объектов, а также сохранить файл в Unicode или ANSI:Мастер покажет сводку, которую вы можете использовать, чтобы убедиться, что все в порядке, и закройте, нажав «Готово».
источник
Сначала вам нужно отключить все триггеры:
Запустите этот скрипт: (Взято из этого сообщения Спасибо @SQLMenace)
Этот сценарий будет создавать
DELETE
операторы в правильном порядке. начиная со ссылочных таблиц, затем ссылаясь наСкопируйте
DELETE FROM
операторы и запустите их один развключить триггеры
Зафиксируйте изменения:
источник
Обычно гораздо быстрее записать в сценарий все объекты в базе данных и создать пустой объект, который можно удалить из таблиц или обрезать.
источник
Ниже скрипт, который я использовал для удаления всех данных из базы данных SQL Server.
источник
источник
В качестве альтернативного ответа, если вы используете Visual Studio SSDT или, возможно, Red Gate Sql Compare, вы можете просто запустить сравнение схемы, выполнить сценарий, удалить старую базу данных (возможно, сначала сделайте резервную копию, если возникнет причина, по которой вам понадобится эти данные), а затем создайте новую базу данных со сценарием, созданным инструментом сравнения. В то время как в очень маленькой базе данных это может потребовать больше работы, в очень большой базе данных будет намного быстрее просто удалить базу данных, чем иметь дело с различными триггерами и ограничениями, которые могут быть в базе данных.
источник
Да, можно удалить одной строкой кода
источник