Очистить все записи в базе данных SQL - PullRequest
2 голосов
/ 21 января 2009

Мне было интересно, что бы вы использовали для очистки базы данных всех тестовых данных (оставив структуру нетронутой) до запуска в производство?

Я использую что-то вроде:

-- disable referential integrity
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO

EXEC sp_MSForEachTable '
 IF OBJECTPROPERTY(object_id(''?''), ''TableHasForeignRef'') = 1
  DELETE FROM ?'
DBCC CHECKIDENT (''?'', RESEED, 0)
GO

-- enable referential integrity again
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO

Что я думаю, что где-то взял в сети, однако, не всегда кажется, что все возвращается к нулю.

Ответы [ 5 ]

3 голосов
/ 21 января 2009

Общий подход состоит в том, чтобы иметь сценарий установки, который удаляет все таблицы и затем воссоздает их. Это дает преимущество по сравнению с простым стиранием данных и сохранением любых изменений.

2 голосов
/ 21 января 2009

Обычно я генерирую операторы DDL из базы данных dev, а затем создаю базу данных с нуля на рабочем сервере.

1 голос
/ 21 января 2009

Чтобы повторно заполнить столбцы идентификаторов, вы можете добавить следующую строку в скрипт сброса.

EXEC sp_MSForEachTable 'DBCC CHECKIDENT('?', RESEED, 0)'

Вы можете изменить 0 в команде на любое значение по умолчанию.

1 голос
/ 21 января 2009

Я бы создал сценарии создания / отбрасывания для таблиц, которые вам нужно вычистить, и просто уничтожил бы их и заново создал.

1 голос
/ 21 января 2009

Мы сохраняем скрипты для построения базы данных в системе контроля версий. Когда нам нужно очистить тестовые данные, мы удаляем базу данных и воссоздаем ее. Другой вариант - восстановить резервную копию в том состоянии, в котором вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...