【发布时间】:2016-05-24 19:49:10
【问题描述】:
我可以使用 Backup-Sqldatabase cmdlet 成功地将数据库备份到一个 .bak 文件。但是,我想为数据库生成剥离的备份文件。这可以使用 cmdlet 吗?
【问题讨论】:
-
您确定条带备份是您真正需要的吗?
我可以使用 Backup-Sqldatabase cmdlet 成功地将数据库备份到一个 .bak 文件。但是,我想为数据库生成剥离的备份文件。这可以使用 cmdlet 吗?
【问题讨论】:
cmdlet 有一个参数-backupFile,它接受一个文件名数组。至少使用 -Script 参数,发出的 TSQL 看起来很合理,所以它应该可以工作。像这样,
PS SQLSERVER:\> Backup-SqlDatabase -Script -ServerInstance ".\sqli001" -Database TestDB -BackupFile @("c:\temp\1.bak", "c:\temp\2.bak")
BACKUP DATABASE [TestDB] TO DISK = N'c:\temp\1.bak', DISK = N'c:\temp\2.bak' WITH NOFORMAT, NOINIT, NOSKIP, REWIND, NOUNLOAD, STATS = 10
GO
【讨论】:
这只会生成用于备份的代码。
使用下面的 PowerShell 脚本执行备份,我提供了一种将动态值传递给备份文件路径的方法,如下所示。
$path = 'D:\BackupFolder\TestDB.Bak,E:\BackupFolder\TestDB.Bak'
$QUERY = Backup-SqlDatabase -Script -ServerInstance ServerName -Database TestDB -BackupFile @($path.split(','))
invoke-sqlcmd -query "$QUERY" -ServerInstance "SQLInstanceName"
【讨论】: