public int DBBackup(string strFileName,out string strErr)
{
strErr="";
SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
try
{
oSQLServer.LoginSecure = false;
string strUserID=System.Configuration.ConfigurationSettings.AppSettings["UserID"].ToString();
string strUserPWD=System.Configuration.ConfigurationSettings.AppSettings["UserPWD"].ToString(); oSQLServer.Connect("localhost", strUserID,strUserPWD);
oBackup.Action =SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
oBackup.Database = "aaa";
oBackup.Files=@strFileName;
oBackup.BackupSetName = "aaa";
oBackup.BackupSetDescription = "数据库备份";
oBackup.Initialize = true;
oBackup.SQLBackup(oSQLServer);
return 1;
}
catch(Exception e)
{
strErr=e.Message;
return 0;
}
finally
{
oSQLServer.DisConnect();
}
}我用上述代码进行数据库备份,在程序里调试没有问题,但打包之后[【WinForm程序】,就无法备份程序,说“无法打开备份设备.....”好像路径不对啊

解决方案 »

  1.   

    可以把备份的语句封装到一个存储过程里面
    另外使用sql语句取得sql的安装目录,备份的时候使用.
      

  2.   

    晕,找到了一点原因:
    我的SQL SERVER数据库备份默认的目录是C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP
    而我的程序安装在“ 盘符:\Program Files\”
    这样,运行我的程序就出现上述错误。我把安装路径不选择在“\Program Files\”,也就是安装路径不含有Program Files文件夹。运行程序就不报错,备份和还原都成功了。
    晕~~~~请指教疑惑!!!
      

  3.   

    string strFileName,让用户自己去选或有用户在ini文件中自己配置,这样目录肯定存在,就不会报错了,不要备份目录写死