2009-11-16 214 views
5

我必須將整個數據庫從SQL Server 2008計算機移動到SQL Server 2000計算機。將SQL Server 2008數據庫還原到SQL Server 2000

我使用Management Studio 2008創建了一個備份,將其複製到了2000盒的硬盤中,並且從Management Studio 2008開始,我選擇了恢復數據庫到2000盒。

我收到一條錯誤消息,指出「設備上的媒體系列...不正確,SQL Server無法恢復此媒體系列」。

如果我使用Enterprise Manager 2000,則會得到相同的錯誤。

有沒有辦法將整個數據庫從較新的SQL服務器移動到較舊的?

回答

10

我能想到的唯一的事情就是重新創建整個結構,然後從實時數據庫複製數據。因此,創建將創建表,視圖和sp的腳本,然後創建腳本以複製現有數據庫中的數據。

+1

我剛剛完成了這個工作。我發現要做到這一點的唯一方法是腳本化整個數據庫(包括數據)並在目標機器上運行腳本。現在,這是一個痛苦,因爲2008 DB可能會創建一個不會在2000年運行的腳本(當然,我也可以),因此在2000年運行之前需要編輯生成的腳本。在開始之前先備好Tylenol。祝你好運。 – BoltBait 2009-11-16 21:32:40

+4

是的,那是唯一的方法。 SQL Server從未向後兼容,例如您從未能夠將較新的版本恢復到較舊的服務器。我不認爲這可能會改變 – 2009-11-16 21:53:20

0

我聽說您只能通過從數據庫管理員工具生成SQL語句轉儲並在目標舊數據庫上重新運行這些查詢來完成此操作。

+1

當然,當腳本工具放入2000年無法識別的東西時,您必須手動操作它們。 – HLGEM 2009-11-16 21:01:11

1

你不能從一個較新版本的備份移動到舊的,在這種情況下,你可以編寫腳本的數據庫,在2000年的箱執行它,那麼你可以使用標準的數據傳輸傳輸任何數據你想

0

您可以生成一個腳本,它將重新創建所有對象並傳輸所有數據......只要該數據庫中的所有內容在SQL 2000中都是有效的。那麼不需要ROW_NUMBER(),不需要PARTITION,不需要CTE,不需要datetime2,層次結構或其他幾種字段類型,EXECUTE AS和其他許多好處。基本上,有一個很好的機會,除非你的數據庫非常基礎,否則這是不可能的。

1

假設您在機器之間使用SSIS進行網絡連接。更容易和更少的混亂。

1

您可以使用腳本生成您的數據庫,然後在屬性中選擇形成:常規 - >腳本的服務器版本:SQL Server 2000中

腳本生成器會告訴你東西不是你的服務器版本兼容。

2

正如其他人已經表示,沒有默認的方式來做到這一點。它只是不受支持。以下是有關如何正確執行此操作的更多詳細信息,並避免任何遷移問題。

您需要爲結構和數據生成腳本,然後在SQL 2000上執行這些腳本(與其他人已經說過的一樣),但有幾件事需要考慮。

產生SSMS腳本

  • 確保檢查選項爲SQL 2000腳本數據,以避免問題的努力創建SQL 2000類似地理類型列時。
  • 請務必查看腳本的執行,以避免基於相關性錯誤

這對於中小型數據庫的一個很好的選擇和需要SQL Server的一些知識(版本和這樣的之間的依賴關係,差異)

第三方工具

  • 想法是使用第三方數據庫比較工具,如ApexSQL DiffData Diff
  • 好的一面是,這些會照顧腳本執行和版本之間的差異
  • 不太好是事實,你將需要支付這些試用期結束之後
  • 我使用這兩種工具但是你不能在市場上的任何其他工具上出錯。 Here是此類別中其他工具的列表。
0

我們得到了類似的情況。一個非常低技術,但方便的解決方案是:

  1. 備份和截斷表中的SQL 2000
  2. 創建SQL 2008中的鏈接服務器,指向SQL 2000
  3. 在sysobjects中運行一個選擇查詢生成一個查詢腳本insert into LINKED SERVER.table select * from table
  4. 執行查詢腳本。
相關問題