c# - 以编程方式备份​​ Azure Sql 数据库

标签 c# sql-server azure

我创建了一个脚本来备份和恢复我的 SQL 数据库。我最近刚刚迁移到 Azure Sql Server。我的以下备份策略不再有效。对于我的程序,它通常会保存备份并创建一个后缀名为训练的新备份。看来Azure Sql Server的备份策略是完全不同的。请问如何以编程方式备份​​ Azure Sql 数据库并恢复它。

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);

最佳答案

I recently just moved to Azure Sql Server. My backup strategy below no longer works

您观察到的是正确的,您的备份策略在 Azure 中不起作用..

如果只需要备份来确保像 OnPremises 那样的时间点恢复,则不需要,因为使用 azure,您可以根据您的级别获得时间点恢复功能。

enter image description here

如果您希望在本地服务器上恢复数据库以进行测试/其他目的..您可以使用以下链接..

1.) How do I copy SQL Azure database to my local development server?

2.) https://blogs.msdn.microsoft.com/mast/2013/03/03/different-ways-to-backup-your-windows-azure-sql-database/

关于c# - 以编程方式备份​​ Azure Sql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39793367/

相关文章:

c# - 如何导出从 Grasshopper 烘焙的顶点颜色,Rhino3d 在 Unity、Unreal 等游戏引擎中或直接在 webXr 中实时分析?

azure - 从 POSTMAN 发出 HTTP 请求时发生错误

rest - 如何使用 PowerShell 中的 RESTful API 在 Azure 中创建资源组?

mysql - 将该列声明为唯一有什么意义吗?

sql - azure db 删除 pk 并添加一个新的

c# - GDI+ 图像比 C# 图像快得多

c# - 如何解决此 WIF/WCF 异常?

c# - 如何对使用 FederatedAuthentication.SessionAuthenticationModule 的代码进行单元测试

sql-server - 在 NHibernate 中使用 Guid Version 列

c# - 哪个性能更好,C# for 循环或 sql 中的游标(或 while 循环)?