我正在尝试制作一个能够从 SQL Server 备份和恢复数据库的 Windows 窗体应用程序。用户可以选择保存 .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();
谢谢!