我正在将SQL数据库备份和恢复部分插入到我的程序中。我一直在使用MSDN示例(尝试另一个,它不会工作)。 MSDN页面 - http://msdn.microsoft.com/en-us/library/ms162133.aspxC#恢复数据库卡在'还原...'
我有备份文件的工作,并已在Management Studio中测试该文件。
但我在恢复文件时遇到了问题。
的代码似乎是工作,但在SQL Server数据库是停留在“恢复......”
if (openFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Server sqlServer = new Server();
Restore sqlRestore = new Restore();
sqlRestore.NoRecovery = true;
sqlRestore.Action = RestoreActionType.Database;
BackupDeviceItem deviceItem = new BackupDeviceItem(openFile.FileName, DeviceType.File);
sqlRestore.Devices.Add(deviceItem);
sqlRestore.Database = "firstRecoverTest";
sqlRestore.SqlRestore(sqlServer);
//Add the recovered database into the Entity Table
SqlCommand intoEntity = new SqlCommand("IF NOT EXISTS(SELECT entityName FROM Entitys WHERE entityName = 'firstRecoveryTest') INSERT INTO Entitys VALUES ('firstRecoveryTest');", sqlConnection);
sqlConnection.Open();
intoEntity.ExecuteNonQuery();
Database db = default(Database);
db = sqlServer.Databases["firstRecoverTest"];
db.RecoveryModel = (RecoveryModel)1;
db.AutoClose = true;
//db.Alter();
}
在这个例子中有一个db.Alter();函数,但会抛出一个错误,指出“Alter数据库失败”firstRecoverTest“”。
请让我知道你的想法提前
感谢
UPDATE
插入后 “ReplaceDatabase = TRUE;”最终结果没有变化。 也逐行逐行显示代码,表明它正在通过。
“db.Alter();”只是放在代码的末尾(显示为注释)。它用于创建备份并无误地工作。 InnerError在使用db.Alter()时显示此信息。
有趣的部分是SQL日志文件
“而数据库处于还原状态ALTER DATABASE是不允许的”。我得到3个日志:
“启动数据库”firstRecoverTest“。”
“数据库'firstRecoverTest'被标记为RESTORING并处于不允许恢复运行的状态。”数据库已恢复:数据库:firstRecoverTest,创建日期(时间):2011/09/20(15:44:48),第一个LSN:37:159:37,最后一个LSN:37:175:1,最后一个LSN为37:175:转储设备数量:1,设备信息:(FILE = 1,TYPE = DISK:{'C:\ Users \ Administrator \ Desktop \ installer_backup'})。信息性消息。无需用户操作。
然而,当我做一个正常的恢复使用SQL Management Studio中有2个对数entrys说
“启动数据库 '[的databaseName]'。”
“恢复完整数据库‘[的databaseName]’。该数据库现已”
我没有足够的声誉发布的它是如何在SQL Management Studio中不幸的小图像。
我已更新我的帖子,希望能帮助解释发生了什么 – Seige
@Seige请参阅更新。 –
谢谢。 我以为我曾试图改变过去,但我一定有其他错误导致它失败。这解决了这个问题。 再次感谢您 – Seige