Учитывая базовый файл базы данных SQL Express (.MDF), как я могу стереть / очистить / сбросить схему и / или данные? - PullRequest
1 голос
/ 04 февраля 2011

Какие параметры мне нужны для очистки схемы и данных из файла MDF? Какие варианты удалить все данные?

Чтобы сбросить схему базы данных, мне кажется, мне нужно скопировать файл из резервной копии базы данных, когда она была пустой. Мне было интересно, есть ли более простой или более эффективный способ.

Чтобы очистить все данные, кажется, мне нужно написать скрипт. Сценарий отключит ограничения, а затем удалит все строки из каждой таблицы, прежде чем вернуться к ограничениям. Это просто, но требует, чтобы я обнаружил / отследил, какие таблицы существуют в базе данных. Может быть, его недостаточно или есть более легкий подход?

1 Ответ

2 голосов
/ 04 февраля 2011

Я не уверен, какой смысл «очищать схему» - конечно, новая база данных уже имеет «чистую» схему. НО, вы можете создать новую базу данных в коде с помощью следующего T-SQL:

USE Master
CREATE DATABASE NewDb (NAME=NewDbFile, FILENAME= '<filepath>')

Если вам нужен файл (MDF), вы можете также отсоединить базу данных с помощью sp_detach_db , а затем переместить ее, как требуется, из указанного выше места:

EXEC sp_detach_db NewDb

Чтобы очистить данные, вы можете использовать sp_msforeachtable с командой усечения - это незарегистрированная операция, не проверяющая ни ограничения, ни внешние ключи, - однако, не может откатиться! *

EXEC sp_msforeachtable 'TRUNCATE TABLE ?'
...