簡體   English   中英

如何以編程方式將 a.bacpac 文件導入本地 SQL Server 實例?

[英]How can I programmatically import a .bacpac file into an on-premises SQL Server instance?

我正在開展一個項目,該項目在 Microsoft Azure 中托管多項服務,包括他們自己的數據庫,即 Azure SQL 數據庫。 開發發生在使用 Docker Compose 的開發人員筆記本電腦上,包括使用mcr.microsoft.com/mssql/server:2022-latest映像的數據庫服務器。

手頭的任務是使用 PowerShell 創建一個腳本化解決方案,它可以手動將備份導入 Azure SQL 數據庫和在 Docker 中運行的 SQL Server。 通過這種方式,我們希望導出和版本化不同的測試數據集,在某些情況下我們希望在部署后將其導入到 Azure 環境中,或者使用它來為本地開發創建數據基線。

盡管這兩個數據庫都是 Microsoft SQL Server,但它們是基於相同代碼庫針對不同環境和不同支持的功能集構建的不同產品 (在 Azure 門戶中截取的屏幕截圖)

Azure SQL 數據庫不適用於*.bak文件,它*.bacpac格式,這是在 Azure SQL 數據庫中手動導出的推薦解決方案(請參閱此處)。 使用New-AzSqlDatabaseImport 命令導入另一個 Azure SQL 數據庫非常簡單。 到目前為止,我一直找不到的是一種以編程方式將*.bacpac作為 PowerShell 腳本的一部分導入到我在 Docker 中的 SQL Server 中的方法。

並非所有開發人員都使用 Windows 機器,因此需要跨平台或在 Docker 容器內的解決方案。

我試過了:

  • 使用 T-SQL 命令RESTORE DATABASE ,它不起作用,因為它需要一個*.bak文件
  • 使用本文第 6 步中所述的sqlpackage實用程序,但在容器中找不到該實用程序( starting container process caused: exec: "/opt/mssql/bin/sqlpackage": stat /opt/mssql/bin/sqlpackage: no such file or directory: unknown

到目前為止,我發現導入*.bacpac文件的唯一方法是使用 SSMS導入數據層應用程序向導手動導入,但我不能以任何方式在 PowerShell 腳本中使用。

真的很想繼續使用備份文件解決方案並避免將我的數據庫導出到 T-SQL 腳本。 任何幫助表示贊賞。

上面的評論是正確的——您可以通過將 sqlpackage 添加到您的 Docker 容器來完成此操作。

我有一個Github 項目將 .bak 轉換為 .bacpac ,我用 SQL Server 和 sqlpackage 構建了一個 Docker 容器

暫無
暫無

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

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