Назад | Перейти на главную страницу

Необходимо удалить таблицу из сотен файлов резервных копий SQL

Мне доступен MS SQL Server 2008. Можно ли создать сценарий (возможно, с помощью Powershell?) Обработки всех моих файлов резервных копий, чтобы удалить таблицу (или две) из каждого из них? Я использовал 7-Zip в командной строке, чтобы зашифровать их, поэтому этот скрипт должен уметь это обрабатывать.

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

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

Конечно, это возможно ...

Из командного файла вы можете использовать osql. Из PowerShell у вас есть выбор osql, Sql Powershell или ADO.Net (SqlConnection и друзья).

Чтобы распаковать и расшифровать, вы можете использовать -pyourpasswordhere вариант с выпиской.


Общий сценарий должен выглядеть так:

  • Получить список файлов 7z, сохранить в переменную
  • Цикл по каждому файлу
    • Извлечь файл с помощью командной строки 7z в временную папку
    • Как-нибудь выполнить (RESTORE DATABASE dbname FROM DISK = 'path to temp bak file' WITH MOVE 'datafile name' to 'temp file path\data.mdf', MOVE 'logfile name' to 'temp file path\log.ldf', RECOVERY, STATS=10)
    • Перейти к базе данных и сбросить таблицу: (USE dbname; DROP TABLE tableName; DROP TABLE tableName2; USE master;)
    • Создать новую резервную копию (BACKUP DATABASE dbname TO DISK = 'path to new bak file' WITH COPY_ONLY, STATS=10 - COPY_ONLY может использоваться, если восстановление файла журнала не используется для ускорения резервного копирования и уменьшения размера)
    • Отбросьте базу данных с сервера "DROP DATABASE dbname;"
    • Зашифруйте и сожмите созданный файл с помощью командной строки 7z
    • Очистить все временные файлы