当前位置: 首页 > 面试题库 >

使用C#还原数据库

萧晔
2023-03-14
问题内容

我正在尝试使用Microsoft.SqlServer.Management.Smo将数据库从一台服务器还原到另一台服务器。问题是我不断收到错误消息,指出它找不到.MDF文件。这样做的原因是,它试图从它来自的SQL实例名称的数据文件夹中找到它,而不是在另一个SQL实例的数据文件夹中寻找它。有没有一种方法可以告诉它要在哪个文件夹中搜索mdf,而不是假定它是标记到BAK文件的文件夹?真令人沮丧


问题答案:

看看Bappi M
Ahmed的这篇文章。它显示了用于还原数据库文件的完整方法。这是它显示的方法:

public void RestoreDatabase(String databaseName, String filePath, 
       String serverName, String userName, String password, 
       String dataFilePath, String logFilePath)
{
    Restore sqlRestore = new Restore();

    BackupDeviceItem deviceItem = new BackupDeviceItem(filePath, DeviceType.File);
    sqlRestore.Devices.Add(deviceItem);
    sqlRestore.Database = databaseName;

    ServerConnection connection = new ServerConnection(serverName, userName, password);
    Server sqlServer = new Server(connection);

    Database db = sqlServer.Databases[databaseName];
    sqlRestore.Action = RestoreActionType.Database;
    String dataFileLocation = dataFilePath + databaseName + ".mdf";
    String logFileLocation = logFilePath + databaseName + "_Log.ldf";
    db = sqlServer.Databases[databaseName];
    RelocateFile rf = new RelocateFile(databaseName, dataFileLocation);

    sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName, dataFileLocation));
    sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName+"_log", logFileLocation));
    sqlRestore.ReplaceDatabase = true;
    sqlRestore.Complete += new ServerMessageEventHandler(sqlRestore_Complete);
    sqlRestore.PercentCompleteNotification = 10;
    sqlRestore.PercentComplete += 
       new PercentCompleteEventHandler(sqlRestore_PercentComplete);

    sqlRestore.SqlRestore(sqlServer);
    db = sqlServer.Databases[databaseName];
    db.SetOnline();
    sqlServer.Refresh();
}


 类似资料:
  • 二进制日志中记录了用户对数据库更改的所有操作,如 INSERT 语句、UPDATE 语句、CREATE 语句等。如果数据库因为操作不当或其它原因丢失了数据,可以通过二进制日志来查看在一定时间段内用户的操作,结合数据库备份来还原数据库。 下面将为读者详细介绍使用二进制日志还原数据库的方法。 数据库遭到意外损坏时,应该先使用最近的备份文件来还原数据库。另外备份之后,数据库可能进行了一些更新,这时可以使

  • 问题内容: 我发现自己对.Net中的DataSet / DataTable / DataRow范式越来越不满意,主要是因为它通常比我真正想做的要复杂得多。在我绑定到控件的情况下,可以使用DataSet。但是在其他情况下,似乎还有很多精神上的负担。 我已经使用SqlDataReader进行了一些操作,这对于通过选择进行简单的干扰似乎很有用,但是我觉得.Net中可能还存在其他一些模型,这些模型对于了解

  • 本文向大家介绍xtrabackup备份还原MySQL数据库,包括了xtrabackup备份还原MySQL数据库的使用技巧和注意事项,需要的朋友参考一下 mysqldump 备份鉴于其自身的某些特性(锁表,本质上备份出来insert脚本或者文本,不支持差异备份),不太适合对实时性要求比较高的情况 Xtrabackup可以解决mysqldump存在的上述的一些问题,生产环境应用的也会更多一些。 本文简

  • 我正在尝试备份/还原一个PostgreSQL数据库,正如Docker网站上解释的那样,但是数据没有还原。 数据库映像使用的卷为: CMD为: 然后创建tar存档: 现在,我删除用于db的容器并创建另一个同名容器,并尝试恢复之前插入的数据: 但表是空的,为什么数据没有正确还原?

  • 主要内容:备份数据,恢复数据,后台备份数据Redis SAVE 命令用于创建当前数据库的备份文件,文件名默认为 。备份数据库数据可以增强对数据的保护,提升数据的安全性。当数据不小心丢失或者被删除时,我们就可以通过相应的操作进行数据恢复。本节介绍 Redis 的数据备份和数据还原操作。 备份数据 SAVE 命令基本语法如下: 执行备份命令: 注意:命令执行后,将在 Redis 安装目录中自动创建 文件。如下图所示: 图1:Redis 备份文

  • 其他信息: system.data.sqlclient.sqlerror:文件'C:\Program Files\Microsoft SQL Server\mssql10_50.mssqlServer\mssql\data\uwa.mdf'由'aston_fresh_log'(2)和'aston_fresh'(1)声明。WITH MOVE子句可用于重新定位一个或多个文件。(Microsoft.sq