从联网的SQLServer进行SMO还原永远不会完成(从C#调用)

从联网的SQLServer进行SMO还原永远不会完成(从C#调用),c#,smo,database-restore,C#,Smo,Database Restore,我尝试将数据库从网络SQLServer复制到本地SQLExpress: private void DoRestore() { if (!File.Exists(fileNach)) { MessageBox.Show("Restore gescheitert " + fileNach); return; } Restore res = new Restore();

我尝试将数据库从网络SQLServer复制到本地SQLExpress:

private void DoRestore()
    {
         if (!File.Exists(fileNach))
         {
             MessageBox.Show("Restore gescheitert " + fileNach);
             return;
         }

        Restore res = new Restore();
        Server srv = new Server(Environment.MachineName.ToString()+@"\SQLEXPRESS");
        //MessageBox.Show("Ziel Server :"+srv.Name);

        try
        {
            string fileName = @fileNach;
            string databaseName = "Outdoor";
            srv.KillAllProcesses(databaseName);
            res.Database = databaseName;
            res.Action = RestoreActionType.Database;
            res.Devices.AddDevice(fileName, DeviceType.File);
            res.ReplaceDatabase = true;
            res.NoRecovery = true;

            string odb;
            string odblog;
            odb = @"C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Outdoor.mdf";
            odblog = @"C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Outdoor.ldf";

            res.RelocateFiles.Add(new RelocateFile("Outdoor", odb));
            res.RelocateFiles.Add(new RelocateFile("Outdoor_Log", odblog));

            // restore starten
            res.SqlRestore(srv);

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
}
这段代码在SQLExpress上启动一个还原过程,但从未结束。mdf和日志文件在目标目录中创建,但还原未完成

我还尝试了
srv.killallprocesss(databaseName)但没有结果


在C#级没有出现错误。

你说它永远不会结束,你看到的是你的代码完成了,但数据库仍停留在“恢复”模式吗?如果是这样,我认为您希望使用恢复进行恢复,否则您将使数据库无法运行。尝试将NoRecovery设置为false而不是true:

res.NoRecovery = false;

  • 通过回滚未提交的 交易。无法还原其他事务日志。 (恢复后恢复

    恢复数据库。此选项相当于恢复 Transact-SQL还原语句中的选项

    仅当没有要删除的日志文件时,才选择此选项 恢复

  • 使数据库保持非操作状态,并且不要回滚 未提交的交易。可以创建其他事务日志 恢复(使用NORECOVERY恢复

    使数据库处于未恢复状态。这个选项是 相当于在Transact-SQL还原中使用NORECOVERY选项 声明

    选择此选项时,将保留复制设置 选项不可用