簡體   English   中英

是否可以在sql server 2005中恢復Sql Server 2008備份

[英]Is it possible to restore Sql Server 2008 backup in sql server 2005

是否可以將SQL Server 2008數據庫的備份還原到SQL Server 2005的實例上?

我需要處理sql server 2008中數據庫備份的示例應用程序。但是我將無法安裝2008.那么有可能在2005年恢復備份嗎?

不可以。無法從較新版本的備份中恢復數據庫。

如果您已經死定,我認為您最好的選擇是在SQL 2008中的對象資源管理器中選擇數據庫,右鍵單擊,選擇任務 - >生成腳本。在選項對話框中可以查看所有內容,包括腳本數據。

並確保選擇“Script for SQL 2005”。

資源

將對象導入目標服務器時,如果對象很大,您可能會發現無法通過Management Studio打開SQL文件(完全沒用“操作無法完成”錯誤,不會少)。 沒關系,只需通過sqlcmd加載文件即可。

所有答案都缺少一個重要的事情,那就是SSMS中的Generate Scripts沒有正確排序腳本。

必須以正確的依賴順序對腳本進行排序,以便在父表等之后創建子表。

對於小型數據庫而言,這不是一個問題,因為它很容易手動重新排序腳本,但在處理具有100多個對象的數據庫時,這可能是一個巨大的問題。

我的經驗是,使用第三方工具最方便,可以按正確順序讀取備份和生成腳本。 我正在使用來自ApexSQL的ApexSQL Diff和Data Diff,但你不會對任何流行的供應商出錯。

不,不是直接的。 SQL Server 2008數據庫備份不與SQL Server 2005向后兼容。但是,使用SQL Server 2008 Management Studio,您可以在SQL Server 2005模式下編寫腳本數據和模式。 本文詳細介紹了該過程。

我有這個問題很長一段時間了。

您無法將SQL2008備份還原到SQL2005實例上。

對我來說,導入/導出wizzard或使用帶有for SQL2005選項的生成腳本從SQL2008編寫腳本數據庫的變通方法將無效。 因為簡單地說,我的數據庫在它們的視圖和存儲過程或udfs中相互交叉引用。 他們完全沒有完全履行我的責任,因此我無法將它們整合到一個數據庫中。 它們是一組6個dbs,它們直接在視圖和存儲過程中相互引用。 當我將它們從一個SQL2005實例傳輸到另一個SQL2005實例時,我通常會進行完全備份/恢復。

如果我要編寫腳本,即使使用with dependencies選項,我也會在重新創建時遇到錯誤,因為db1將無法在db3中找到視圖,因為碰巧我首先執行了create db1腳本。 如果我先嘗試db3,我會得到類似的例外。

編寫腳本以使我不會有這種依賴性異常的唯一方法是找出一個有效的序列,並以這種方式部分編寫腳本:比如:db1_tables后跟db2_tables,后跟db2_views,后跟db1_views,sp,udfs等。

我有這樣一個序列。 當我需要創建一組這樣的6個dbs時,我按順序執行了較小的部分腳本。

這解釋了為什么生成具有依賴關系和數據並設置為SQL2005版本腳本的腳本對我來說不起作用。

導入/導出wizzard在我的情況下更好,因為它將復制表,然后你仍然需要腳本所有視圖,sp,udfs等。

我真正需要的是SQL2008備份文件的轉換工具,將它們轉換為SQL2005格式。 然后我的問題就會消失。 或者某種工具可以從SQL2008完整備份文件中恢復,而不會問我太多問題。

如果有人知道這些工具並使用過它們,請告訴我。

對的,這是可能的

使用SQL Server 2008中的導出。轉到“ All Programs - >“ Microsoft SQL Server 2008 - >“ Import and Export Data

  • 然后將打開SQL Server Import AND Export Wizard窗口。 Next

  • 選擇一個數據源(在您的情況下從SQL Server 2008)。 選擇目標(在您的情況下從SQL Server 2005)。

  • 選擇Copy data from one or more tables or view

  • 選擇源的表和目標表

  • 單擊NextFinish

去完成。

你可以使用DBSave ,它是一個很棒的免費工具,可以在不同的機器上備份和恢復ms sql server。 設置和使用非常簡單。

導入/導出的東西沒有運氣(平面文件導出失敗導入聲稱字符集映射問題[即使整個使用相同的字符集]和/或截斷問題[即使源和目標具有完全相同的結構]),並且已經使用Garry Shutler建議的“生成腳本”選項(它生成了一個語法錯誤的腳本)沒有運氣,我終於能夠使用SQL Server bcp實用程序復制我想要從2008年到2005年復制的大表。 所以這是這種情況的另一個選擇,雖然對於整個數據庫來說,它將是逐個表的,並且可能對視圖等沒有幫助。

我使用的步驟:

  1. 在源服務器上,使用“Script Table As ... CREATE”獲取結構,在目標服務器上運行該結構。

  2. 在目標服務器上,使用新創建的表創建bcp格式文件:

      bcp database.owner.table格式為nul -f table.fmt -n 

    (如果您沒有使用Windows身份驗證,則可能需要-U-P選項來指定用戶名和密碼。)

  3. 將該格式文件復制到源服務器(如有必要)。

  4. 將數據導出到源服務器上的文件:

      bcp database.owner.table out table.dat -f table.fmt 

    (同樣,可能使用-U-P 。)

  5. 將數據文件復制到目標服務器(如有必要)。

  6. 導入目標服務器上的數據:

      table.dat -f table.fmt中的bcp database.owner.table 

    (同樣,可能使用-U-P 。)

希望證明對別人有用。

不,你不能,但紅門的SQL比較/數據比較等工具可以直接讀取備份文件並將信息傳輸到實時數據庫,處理SS2005上不兼容的任何語法或設置

暫無
暫無

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

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