簡體   English   中英

將 BAK 還原為 MDF 文件時出錯

[英]Error in restoring BAK to MDF file

我正在使用以下代碼將 BAK 文件還原為 MDF 文件,最初我創建了一個數據庫,然后嘗試使用我的 BAK 文件還原它,但出現了一些錯誤:我使用打開文件對話框 select 我的 BAK 文件

            openDialogConvert.ShowDialog();
        RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server");
        String[] instances = (String[])rk.GetValue("InstalledInstances");
        string sqlname = "";
        if (instances.Length > 0)
        {
            foreach (String element in instances)
            {
                if (element == "MSSQLSERVER")
                    sqlname = System.Environment.MachineName;
                else
                    sqlname = System.Environment.MachineName + @"\" + element;

            }
        }


        String str;
        SqlConnection myConn = new SqlConnection("Server=" + sqlname + ";Integrated security=SSPI;database=master");
        string dbname = "tmpDB" + DateTime.Now.Ticks.ToString();
        str = "CREATE DATABASE " + dbname + " ON PRIMARY " +
            "(NAME = MyDatabase_Data, " +
            "FILENAME = '" + Environment.CurrentDirectory + "\\" + dbname + ".mdf') " +
            "LOG ON (NAME = MyDatabase_Log, " +
            "FILENAME = '" + Environment.CurrentDirectory + "\\" + dbname + ".ldf') ";

        SqlCommand myCommand = new SqlCommand(str, myConn);
        try
        {
            myConn.Open();
            myCommand.ExecuteNonQuery();
            MessageBox.Show("DataBase is Created Successfully", "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        catch (System.Exception ex)
        {
            MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        myCommand.Dispose();

        str = @"RESTORE DATABASE [" + dbname + "] FROM  DISK = N'" + openDialogConvert.FileName + @"' WITH  MOVE N'IODB_Data' 
TO N'" + Environment.CurrentDirectory + @"\\" + dbname + @".mdf',  MOVE N'IODB_Log' 
TO N'" + Environment.CurrentDirectory + @"\\" + dbname + @".ldf',  REPLACE ";
            myCommand = new SqlCommand(str, myConn);
            myCommand.ExecuteNonQuery();
            myCommand.Dispose();
            myConn.Close();

我的新(空)數據庫已成功創建,但在嘗試在此新創建的數據庫中還原 BAK 文件時出現奇怪的錯誤。

使用上面的代碼出現以下錯誤:

操作系統在“D:\7 mordad fara\Ofogh-Dsk\Ofogh-Dsk\bin\Debug”上嘗試“RestoreContainer::ValidateTargetForCreation”時返回錯誤“32(無法檢索此錯誤的文本。原因:15105)” \tmpDB635107927412887254.mdf'。

文件“IODB_Data”無法恢復到“D:\7 mordad fara\Ofogh-Dsk\Ofogh-Dsk\bin\Debug\tmpDB635107927412887254.mdf”。 使用 WITH MOVE 確定文件的有效位置。

操作系統在“D:\7 mordad fara\Ofogh-Dsk\Ofogh-Dsk\bin\Debug”上嘗試“RestoreContainer::ValidateTargetForCreation”時返回錯誤“32(無法檢索此錯誤的文本。原因:15105)” \tmpDB635107927412887254.ldf'。

文件“IODB_Log”無法恢復到“D:\7 mordad fara\Ofogh-Dsk\Ofogh-Dsk\bin\Debug\tmpDB635107927412887254.ldf”。 使用 WITH MOVE 確定文件的有效位置。

在規划 RESTORE 語句時發現了問題。 以前的消息提供了詳細信息。

RESTORE DATABASE 異常終止。

但是當我在命令末尾插入“GO”時,出現以下錯誤:GO 附近的語法不正確

這里出了什么問題? 當然,我已經使用 SQL server management studio 成功測試了恢復操作,並且我已經為我的 BAK 文件找到了正確的邏輯名稱(事實上我已經從 MSSMS 復制了腳本)

你也可以試試這個。

  • 第 1 步 - 使用 MS SQL Server Management Studio 連接數據庫服務器。
  • 第 2 步 - 在左窗格中找到數據庫並右鍵單擊以選擇還原選項。
  • 第 3 步 - 選擇還原的目的地和來源。
  • 第 4 步 - 從設備瀏覽備份文件並單擊確定
  • 步驟 5 - Select 從列表中選擇要還原的數據庫,然后單擊確定。

完成還原過程后,您的數據庫就可以使用了。

注意:您必須創建一個新數據庫才能恢復舊數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM