我试图做一个Windows窗体应用程序,就可以备份和恢复从SQL Server数据库。用户可以选择保存.bak文件的位置。我有C#:备份SQL Server数据库到一个新的.bak文件
问题是,如果该文件不存在,它不会创建一个新的。因此,如果我从SQL Server内部进行备份并将其保存到C:\ backup.bak并将其作为“路径”传递到程序中,但是如果我将该文件的位置或名称更改为不存在它会抛出一个错误,说它无法打开备份设备。如果它不存在,是否可以创建一个新的.bak文件,我该如何去做?
我的代码当前如下;
var dataSource = txtDS.Text;
var db = txtDbName.Text;
var path = txtBackup.Text;
var name = txtName.Text;
var desc = txtDesc.Text;
if(File.Exists(path) == true)
{
MessageBox.Show("Test");
}
else
{
Directory.CreateDirectory(@path);
}
Server myServer = new Server(dataSource);
myServer.ConnectionContext.LoginSecure = true;
myServer.ConnectionContext.Connect();
var bkpDbLog = new Backup();
bkpDbLog.Action = BackupActionType.Database;
bkpDbLog.Database = db;
bkpDbLog.Devices.AddDevice(path, DeviceType.File);
bkpDbLog.BackupSetName = name;
bkpDbLog.BackupSetDescription = desc;
bkpDbLog.Initialize = true;
bkpDbLog.Checksum = true;
bkpDbLog.ContinueAfterError = true;
bkpDbLog.Incremental = false;
bkpDbLog.FormatMedia = false;
bkpDbLog.PercentComplete += CompletionStatusInPercent;
bkpDbLog.Complete += BackupCompleted;
bkpDbLog.SqlBackup(myServer);
if (myServer.ConnectionContext.IsOpen)
myServer.ConnectionContext.Disconnect();
谢谢!
我试图直接保存到C:\,但它仍然抛出一个错误。 我遵循本指南http://technico.qnownow.com/backup-and-restore-sql-server-database-programmatically-in-c/ 截图http://i.imgur.com/jUqSb.jpg – chickenbeef
谢谢!这工作,这是权限。愚蠢的错误:) – chickenbeef
当然,为什么不。再次感谢。 – chickenbeef