private void button13_Click(object sender, System.EventArgs e)
{
SQLDMO.Backup backup = new SQLDMO.BackupClass();
SQLDMO.SQLServer server = new SQLDMO.SQLServerClass();
//显示进度条
SQLDMO.BackupSink_PercentCompleteEventHandler progress = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step);
backup.PercentComplete += progress;
try
{
server.LoginSecure = false;
server.Connect(".", "sa", "littlelink");
backup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
backup.Database = "Hpcc3OA";//Hpcc3OA数据库名称
backup.Files=@"d:\Hpcc3OA";?????????????????????????????????????
backup.BackupSetName = "Hpcc3OA";
backup.BackupSetDescription = "Backup the database of Hpcc3OA ";
backup.Initialize = true;
backup.SQLBackup(server);
MessageBox.Show("备份数据库成功);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
server.DisConnect();
}
}
private void Step(string message,int percent) 

progressBar2.Value = percent ; 
}
这段代码没有问题
如果有?????????????????????????????????????的地方写成这样
backup.Files=@"C:\Documents and Settings\Admin\桌面\新建文件夹\Hpcc3OA";
出错,提示:
[Microsoft][ODBC SQL Server Driver][SQL Server]无法打开备份设备 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\Settings\Admin\桌面\新建文件夹\Hpcc3OA'。设备出现错误或设备脱机。详细信息请参阅 SQL Server 错误日志。
[Microsoft][ODBC SQL Server Driver][SQL Server]BACKUP DATABASE 操作异常终止。 backup.Files=@"c:\Hpcc3OA";可以
backup.Files=@"C:\Program Files\Hpcc3OA";不可以
backup.Files=@"C:\sql金\Hpcc3OA";可以
请问这是怎么回事?
如果要把服务器的数据库备份到本机应该怎么写?,谢谢

解决方案 »

  1.   

    不是不可以,是你的路径名问题,即在sqldemo中只能识别短路径名,无法识别长路径名,或者其中包括空格的路径名,因此你需要进行转换(好像有这样的转换api)。也就是说,你需要把“Documents and Settings”转换成“Docume~1”
      

  2.   

    backup.Files =@"C:\Docume~1\Admin\桌面\Hpcc3OA.bak";
    这样写就没有问题了,但我需要folderBrowserDialog1来选择一个路径,那怎么把这个路径进行转换呢,
      

  3.   

    就是如何把folderBrowserDialog1选择的一个长路径转换成短路径
      

  4.   

    就是如何把folderBrowserDialog1选择的一个长路径转换成短路径,这个问题解决了,
    如果要把服务器的数据库备份到本机应该怎么写?,谢谢