首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从备份文件恢复数据库

无法从备份文件恢复数据库
EN

Stack Overflow用户
提问于 2013-08-26 15:51:00
回答 1查看 999关注 0票数 0

基于的文章,我制作了一个小型的WPF应用程序来备份/恢复数据库。

代码:

代码语言:javascript
复制
using System.Windows;
using Microsoft.SqlServer.Management.Smo;

namespace DBManager
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow
    {
        private Server srv;
        private Database db;
        private BackupDeviceItem bdi;
        private int recoverymod;

        public MainWindow()
        {
            InitializeComponent();
            srv = new Server();
            db = srv.Databases["MyDB"];
            recoverymod = (int) db.DatabaseOptions.RecoveryModel;
            bdi = new BackupDeviceItem("Test_Full_Backup1", DeviceType.File);
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            BackupDB();
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            RestoreDB();
        }

        public void BackupDB()
        {
            var bk = new Backup
            {
                Action = BackupActionType.Database,
                BackupSetDescription = "Full backup of MyDB",
                BackupSetName = "MyDB Backup",
                Database = "MyDB"
            };

            bk.Devices.Add(bdi);
            bk.Incremental = false;
            bk.LogTruncation = BackupTruncateLogType.Truncate;
            bk.SqlBackup(srv);
            label1.Content = "Backup finished";
            bk.Devices.Remove(bdi);
        }

        public void RestoreDB()
        {
            db.Drop();
            var rs = new Restore { NoRecovery = true };
            rs.Devices.Add(bdi);
            rs.Database = "MyDB";
            rs.SqlRestore(srv);
            label1.Content = "Restoration finished";
            db = srv.Databases["MyDB"];
            rs.Devices.Remove(bdi);
            db.RecoveryModel = (RecoveryModel) recoverymod;
        }
    }
}

当我单击button1时,备份文件将按预期的方式创建。

当我单击button2时,我可以看到“恢复完成”消息,一切看起来都很好,但是我无法使用另一个使用它的应用程序访问数据库。

在中,我看到“(还原.)”在数据库的名称之后,看起来恢复过程永远不会结束。

Visual Studio 2010和SQL Server 2012

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-26 16:19:37

数据库处于恢复状态,因为您指定:

代码语言:javascript
复制
NoRecovery = true

如果希望在还原后恢复数据库,请将此行更改为:

代码语言:javascript
复制
NoRecovery = false

Comparison of RECOVERY and NORECOVERY部分这里中有更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18448061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档