Самый быстрый способ удалить весь контент в базе данных и восстановить с нуля? - PullRequest
0 голосов
/ 30 ноября 2009

Я разрабатываю стандартный сайт ASP.Net с базой данных SQL. У меня есть схема базы данных, и во время тестов я меняю типы данных среди других задач, и данные, содержащиеся внутри, на самом деле не так важны.

Я получаю ошибки, поскольку старые данные не соответствуют новым правилам. Это не важно, и я рад все очистить, но в настоящее время я должен экспортировать / опубликовать базу данных в файл .sql, а затем импортировать ее с нуля, что отнимает много времени.

Есть ли какая-нибудь быстрая кнопка / функция, которую я пропустил, которая позволяет вам сбросить автонумерации / идентификаторы на 1 и удалить весь контент, или просто ускорить то, что я делаю в настоящее время?

Ответы [ 6 ]

3 голосов
/ 30 ноября 2009

Есть несколько вариантов, которые вы можете выбрать, «самый быстрый» зависит от вашей базы данных.

Чтобы сначала ответить на ваши вопросы о посеве и т. Д. - TRUNCATE TABLE удалит всю информацию в таблице (очень быстро, так как она не зарегистрирована) и сбросит ваш столбец идентификации.

например:

TRUNCATE TABLE dbo.table

http://msdn.microsoft.com/en-us/library/aa260621(SQL.80).aspx

Существенным ограничением здесь является то, что вы не можете использовать его в таблице, на которую ссылается другая таблица. В этом случае вы можете использовать стандартное удаление, а затем использовать DBCC CHECKIDENT

например:

DELETE FROM dbo.table
GO
DBCC CHECKIDENT(dbo.table, reseed, 0)

http://msdn.microsoft.com/en-us/library/ms176057.aspx

Запомните при удалении, чтобы убедиться, что вы удаляете информацию в правильном порядке (т.е. с учетом внешних ключей).

Другой подход, который я часто использую, это просто написание полного сценария разборки / перестройки, когда я хочу сбросить базу данных. Основная предпосылка состоит в том, чтобы удалить или удалить все объекты базы данных в начале сценария, а затем воссоздать их. Это не обязательно решение для всех сценариев, но для основных задач хорошо работает для меня. Чтобы избежать ошибок, я обычно добавляю свои операторы отбрасывания в операторы IF, например:

IF EXISTS 
(
     SELECT * 
     FROM information_schema.tables 
     WHERE table_name = 'table' AND table_schema = 'dbo'
)
BEGIN
    DROP TABLE dbo.table
END
1 голос
/ 30 ноября 2009

Если вам просто нужно очистить данные, просто напишите сценарий для усечения всех данных в каждой таблице. Команда truncate также сбрасывает все поля IDENTITY.

TRUNCATE TABLE myTable

Для каждой таблицы у вас есть. Затем просто запускайте этот скрипт каждый раз.

1 голос
/ 30 ноября 2009

Почему бы вам не написать код T-SQL для удаления (или усечения, даже быстрее) всех ваших таблиц? При очистке таблиц соблюдайте правила целостности: всегда очищайте таблицы, содержащие внешний ключ, перед очисткой таблицы, содержащей первичный ключ.

1 голос
/ 30 ноября 2009

Вот быстрый способ удалить все данные в таблице:

TRUNCATE TABLE YourTableName

Вы могли бы написать скрипт, который бы обрезал все ваши таблицы.

Альтернатива - просто УДАЛИТЬ таблицу и воссоздать ее.

Если вы действительно хотите сбросить все данные, то вы можете отсоединить базу данных и создать новую; это немного экстремально, но, возможно, быстрее, чем бросить все сначала.

0 голосов
/ 17 июля 2017

, если вы используете Visual Studio 2010, тогда

откройте папку App_Data решения и дважды щелкните файл MDF. щелкните правой кнопкой мыши по таблице, в меню выберите «Показать данные таблицы». выделите все строки и удалите все.

0 голосов
/ 30 ноября 2009

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

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

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

...