我正在將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