Restore

從 Azure SQL 託管實例備份數據庫並還原到本地 SQL Server

  • December 9, 2020

我將三個數據庫遷移到 Azure SQL 託管實例。一個是實用程序數據庫,只是通用函式和過程的一小部分集合。一種是用於 Web 應用程序的 OLTP 數據庫。第三個是 OLTP 數據庫的只讀存檔,其中包含用於分析和報告的歷史數據以及審計表。我需要能夠將這些數據庫恢復到本地開發和測試伺服器。到目前為止,我一直沒有成功。

我的第一次嘗試是使用備份到 Azure Blob 儲存。但是無論我在本地使用什麼版本的 SQL Server,我總是收到一個錯誤,即 Copy Only 備份來自較新版本並且不支持還原。

接下來,我嘗試從 SSMS v.18.1 導出數據層應用程序。不幸的是,它永遠不會超過出口。我收到幾十個錯誤External references are not supported when creating a package from this platform。託管實例相對於 Azure SQL DB 的最大優勢之一是能夠執行跨數據庫查詢。我有許多連結兩個數據庫中的表的視圖和過程。此外,OLTP 數據庫中的某些過程呼叫 Utility 數據庫中的函式。由於 MI 不是 Azure SQL 數據庫,您會認為這不是問題!

搜尋Google,我在 Stack Overflow 上找到了這個問題。所以我嘗試了作為答案提出的 Visual Studio 方法。儘管它似乎可以工作,這意味著它會在我的本地電腦上創建一個多 GB 的文件,但嘗試使用 SSMS 導入該文件會給我一個錯誤,顯示為No data is present in this file.所以然後我嘗試了第二種可能的解決方案,使用sqlpackage.exe. 但是該解決方案對我也不起作用,因為它僅引用導出架構。如果我嘗試導出整個數據庫,/Action:Export我會收到與 SSMS 相同的錯誤消息。

我還檢查了這個數據庫管理員問題。沒有幫助 - 這是我最初嘗試的。如果有人有任何其他想法,我將不勝感激!

不支持從 MI 進行 Bacup-restore。當發現很少的依賴項或不受支持的功能時,backpac 提取失敗。這是因為 SSMS 會驗證您的提取。嘗試使用 SSDT (Visual STudio),您可以跳過驗證提取(預設情況下未選中):

  1. 打開 SQL Server 對象資源管理器

在此處輸入圖像描述

  1. 連接到您的 MI。右鍵點擊數據庫並點擊:提取數據層應用程序。

選擇提取架構和數據。

這將成功。

在此處輸入圖像描述

在此處輸入圖像描述

  1. 使用上面創建的 dacpac 文件來部署數據庫。右鍵點擊數據庫 –> 部署數據層應用程序。

數據和架構:

在此處輸入圖像描述

引用自:https://dba.stackexchange.com/questions/244167