繁体   English   中英

通过AttachDBFilename备份还原sql数据库

[英]backup restore sql database through AttachDBFilename

我无法创建保存在C:\\database\\mydb.mdf等位置的数据库的备份

错误:无法创建备份

        Backup sqlBackup = new Backup();

        sqlBackup.Action = BackupActionType.Database;
        sqlBackup.BackupSetDescription = "ArchiveDataBase:" +
                                         DateTime.Now.ToShortDateString();
        sqlBackup.BackupSetName = "Archive";

        sqlBackup.Database = databaseName;

        BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath, DeviceType.File);
        //ServerConnection connection = new ServerConnection(serverName, userName, password);
        ServerConnection connection = new ServerConnection(serverName);

        Server sqlServer = new Server(connection);

        Database db = sqlServer.Databases[databaseName];

        sqlBackup.Initialize = true;
        sqlBackup.Checksum = true;
        sqlBackup.ContinueAfterError = true;

        sqlBackup.Devices.Add(deviceItem);
        sqlBackup.Incremental = false;

        sqlBackup.ExpirationDate = DateTime.Now.AddDays(3);
        sqlBackup.LogTruncation = BackupTruncateLogType.Truncate;

        sqlBackup.FormatMedia = false;

        sqlBackup.SqlBackup(sqlServer);   

 string dataBaseName = @"C:\database\mydb.mdf";    
 string serverName = @"Data Source=.\SQLEXPRESS;Integrated Security=True;User Instance=True";    
 string destinationPath = "C:\\mydb.bak";    

也许我传递了错误的变量?

请任何人验证并向我发布正确的解决方案

提前thnx。

PS:数据库不受密码保护,可以使用混合身份验证

首先-我猜您的某些参数有误:

ServerConnection connection = new ServerConnection(serverName);

在这里,您只需要传递服务器的名称 -因此,在这种情况下,请勿发送整个连接字符串-仅发送.\\SQLExpress

至于您的数据库名称-我不知道您是否可以使用SMO备份SQL Server中的“附加” MDF文件-通常,这将是数据库名称( 数据库名称-无文件名,无扩展名)当数据库在服务器上时

string dataBaseName = @"C:\database\mydb.mdf";    

所以我的建议是:

  • 将此MDF文件附加到您的SQL Server实例(无论如何您已安装)
  • 给它起一个有意义的名字,例如mydb
  • 然后仅在此处使用数据库名称作为您的值:

     string dataBaseName = "mydb"; 

有了这些要点,就我而言,您的代码至少可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM