需要从100个SQL备份文件中删除表

我有MS SQL Server 2008提供给我。 是否可以脚本(也许与Powershell?)处理我所有的备份文件,从每个表中删除一个表(或两个)? 我在命令行上使用7-Zip来encryption它们,所以这个脚本必须能够处理它。

我真的想避免解密,然后手动附加每一个。 这只是不会削减,但我的技能不能让我知道是否有更好的。

我不是要求一个完整的解决scheme。 我想知道这是否实际可行,以及有人可能会先做这件事。

当然,这是可能的…

从batch file中可以使用osql 。 从powershell你有你的selectosql , Sql Powershell或ADO.Net( SqlConnection和朋友) 。

要解压缩和解密,您可以在提取时使用-pyourpasswordhere选项。


一般的脚本应该是这样的:

  • 获取7z文件列表,存储到variables
  • 在每个文件上循环
    • 使用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
    • 切换到databse和drop table:( 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创build新备份( BACKUP DATABASE dbname TO DISK = 'path to new bak file' WITH COPY_ONLY, STATS=10如果不使用日志文件恢复来加速备份和减小大小,则可以使用COPY_ONLY
    • 从服务器“DROP DATABASE dbname;”中删除数据库
    • 使用7z命令行encryption和压缩创build的文件
    • 清理所有临时文件