【发布时间】:2016-09-30 14:03:10
【问题描述】:
我创建了一个脚本来备份和恢复我的 sql 数据库。我最近刚搬到 Azure Sql Server。我下面的备份策略不再有效。对于我的程序,它通常会保存一个备份并创建一个带有名为 training 的后缀的新备份。看来 Azure Sql Server 备份策略完全不同。请问如何以编程方式备份Azure Sql db并恢复它。
if (!sqlServer.Databases.Contains(databaseTraining))
{
var backupFile = string.Concat(sqlServer.Settings.BackupDirectory, "\\", database, "Training.BAK");
var sourceBackup = new Backup
{
Database = database,
Action = BackupActionType.Database
};
var destDevice = new BackupDeviceItem(backupFile, DeviceType.File);
sourceBackup.Devices.Add(destDevice);
sourceBackup.Initialize = true;
sourceBackup.SqlBackup(sqlServer);
var db = new Microsoft.SqlServer.Management.Smo.Database(sqlServer, databaseTraining);
db.Create();
var destinationRestore = new Restore
{
Database = databaseTraining,
Action = RestoreActionType.Database
};
destinationRestore.Devices.Add(destDevice);
var dataFile = new RelocateFile
{
LogicalFileName = destinationRestore.ReadFileList(sqlServer).Rows[0][0].ToString(),
PhysicalFileName = sqlServer.Databases[databaseTraining].FileGroups[0].Files[0].FileName
};
var logFile = new RelocateFile
{
LogicalFileName = destinationRestore.ReadFileList(sqlServer).Rows[1][0].ToString(),
PhysicalFileName = sqlServer.Databases[databaseTraining].LogFiles[0].FileName
};
destinationRestore.RelocateFiles.Add(dataFile);
destinationRestore.RelocateFiles.Add(logFile);
destinationRestore.ReplaceDatabase = true;
destinationRestore.NoRecovery = false;
destinationRestore.SqlRestore(sqlServer);
【问题讨论】:
-
不同的是:MS 不是你做备份。
BACKUP命令在 Azure SQL Server 上不可用。 -
对于 SQL Azure,您可能希望了解专业的备份服务,例如 CloudBerry、RedGate's CherrySafe。
标签: c# sql-server azure