2013-06-21 5 views
2

Я хочу сделать резервную копию моей базы данных SQL Server, чтобы я мог отправить ее моему поставщику, чтобы помочь с диагнозом. Однако я не хочу включать данные из таблиц с информацией о клиентах.Почему удаленные данные сохраняются в файле резервной копии SQL Server?

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

Однако, когда я просматриваю резервную копию в текстовом редакторе, я вижу много личных данных, сидящих в файле резервной копии. Любая идея почему?

ответ

3

Когда вы удаляете данные в базе данных SQL Server, SQL Server просто отмечает страницы как свободные, но не перезаписывает данные. Точно так же, как любая современная файловая система фактически не удаляет файлы, а вместо этого просто маркирует блоки диска как свободные.

Чтобы очистить вашу базу данных я хотел бы попробовать следующее:

  1. удалить данные
  2. восстановить все индексы и кучи (перестраивать, не реорганизовать)
  3. сжиматься каждый файл данных с реорганизацией страниц в минимально возможный размер
  4. повтор 2 и 3 несколько раз
  5. выполнить контрольную точку
  6. отсоединять datab аза и переименовать логфайл
  7. подключить базу данных вынуждают SQL Server воссоздать новый пустой файл журнала (http://www.mssqltips.com/sqlservertip/1894/attach-a-sql-server-database-with-a-missing-transaction-log-file/)
  8. Выполнить DBCC CHECKDB, чтобы убедиться, что вы не сломать что-нибудь
  9. взять резервную копию

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

Восстановление индексов необходимо, так как в противном случае одна единственная удаленная строка может сохраниться среди неиспользуемых строк внутри страницы. Реорганизация и сжатие удаляют неиспользуемые страницы. Однако иногда он не полностью очищается, поэтому вам нужно повторить шаги 2 и 3. 4, 5 и 6 убедитесь, что в файле журнала нет следа данных, которые в противном случае были бы в зависимости от вашей модели восстановления, все еще содержат удаленные данные, потенциально несколько раз.