【发布时间】:2012-09-27 08:39:00
【问题描述】:
我正在尝试制作一个能够从 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();
谢谢!
【问题讨论】:
-
我尝试直接保存到 C:\,但仍然报错。我按照这个指南technico.qnownow.com/…截图i.imgur.com/jUqSb.jpg
-
谢谢!那行得通,这是权限。愚蠢的错误:)
-
没问题,很高兴我能这么快提供帮助。
标签: c# sql-server database windows-forms-designer