✅適用於:Microsoft Fabric 中的 SQL 資料庫
在本教學課程中,您會瞭解如何在 Fabric 的 SQL 資料庫中使用 SqlPackage。
SqlPackage 是 CLI,提供資料庫可移植性和資料庫部署。
- 在 Azure 或 Fabric 中管理的資料庫具備匯入/匯出的可移植性,確保若您將來想要移轉,您的數據可以順利移至其他平台。 - 可移植性包括利用獨立資料庫副本(
.bacpac或.dacpac檔案)將資料庫在 SQL Server、Azure SQL Database、Azure SQL 受控實例和 Fabric 的 SQL 資料庫之間進行移入和移出。
SqlPackage 也可以對資料庫對象進行累加式變更的簡單資料庫部署(數據表中的新數據行、現有預存程式的變更等等)。
- SqlPackage 可以擷取
.dacpac包含資料庫中物件定義的檔案,併發佈檔案.dacpac以將該物件狀態套用至新的或現有的資料庫。 - 發行作業也會與 SQL 專案整合,可讓 SQL 資料庫離線且更動態的開發週期。
必要條件
- 您需要的是現有 Fabric 容量。 如果您沒有,則開始試用 Fabric。
- 建立新的工作區或使用現有的 Fabric 工作區。
- 在 Fabric 中建立或使用現有的 SQL 資料庫。 如果您還沒有 SQL 資料庫, 請在 Fabric 中建立新的 SQL 資料庫。
- 安裝 .NET 8 SDK。
設定
SqlPackage 適用於 Windows、macOS 和 Linux 作為 dotnet 工具。 您可以使用下列命令安裝:
dotnet tool install --global Microsoft.SqlPackage
作為全域 dotnet 工具,SqlPackage 可在您的終端機中使用,就像從任何資料夾一樣 sqlpackage 。
使用 SqlPackage 匯入資料庫
.bacpac是資料庫的可攜式複本,適用於某些移轉和測試案例。 您可以使用 SqlPackage import 將其.bacpac匯入空的 SQL 資料庫。
注意
.bacpac不是用來備份或取代備份/還原功能。 如需 Fabric 中 SQL Database 備份的詳細資訊,請參閱 Microsoft Fabric 中的 SQL 資料庫中自動備份 和 從 Microsoft Fabric 中 SQL 資料庫中的備份還原。
如果從 Azure 或 SQL Server 環境使用
.bacpac,您可能需要改變源資料庫,以符合 Fabric T-SQL 介面區中的 SQL 資料庫。 若要使用可忽略某些不支援物件的替代方法,請參閱 擷取和發佈可移植性,這將啟用 SqlPackage 屬性。透過網狀架構介面,如往常在 Fabric 中建立新的 SQL 資料庫。
從設定複製 連接字串。
使用 sqlpackage 資料夾中終端機的 import 命令。 提供您的擁有者與
<servername><database_name>。sqlpackage /action:import /sourcefile:"C:\DatabaseName.bacpac" /targetconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive"- 從 [SQL 資料庫設定] 對話框取代您的 連接字串。
- 將
sourcefile值取代為.bacpac本機電腦上的名稱 (DatabaseName) 和location。
在 Microsoft Fabric 的 Data Factory 中,進行匯入後,再使用 複製作業。 若要開始使用,請參閱 快速入門:建立複製作業。
使用 SqlPackage 匯出資料庫
匯出 .bacpac 是反向作業,您可以在 [SQL 資料庫設定] 對話框中找到 您的 targetfile 和 .bacpacsourceconnectionstring ,如上一個範例所示。 提供您的擁有者與 <servername><database_name>。 例如:
sqlpackage /action:export /targetfile:"C:\DatabaseName.bacpac" /sourceconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive"
如需導出的詳細資訊,請參閱 SqlPackage 導出。
擷取和發佈
.dacpac是資料庫架構模型檔案,其中包含源資料庫中數據表、預存程式和其他物件的定義。 您可以從具有 SqlPackage 的現有資料庫或 SQL 資料庫專案建立此檔案。
SqlPackage 能夠將 部署到 .dacpac 新的 (空白) 資料庫,或以累加方式更新現有的資料庫,以符合所需的 .dacpac 狀態。
-
擷取 會
.dacpac從現有的資料庫建立 或 sql 檔案。 -
發佈 會將
.dacpac部署至資料庫。
SqlPackage 發佈 和 擷取 語法類似於匯入/導出命令。
警告
建議使用 SqlPackage 將 SQL 專案或 .dacpac 部署至 Fabric 中的 SQL 資料庫。 從 Visual Studio 部署 .dacpac 可能會失敗。
若要部署從 Azure SQL Database、SQL Server 或以 Fabric 中 SQL Database 以外的平台為目標的 SQL 專案所建立的 .dacpac,請將 屬性 /p:AllowIncompatiblePlatform=true 附加至 SqlPackage 發佈命令。
提取和發佈帶有可攜性的內容
雖然 SqlPackage 的匯入/匯出命令著重於使用 .bacpac 格式進行數據的可移植性,但擷取和發佈命令則可以使用 .dacpac 格式來實現數據的可移植性。 擷取和發佈屬性可用來控制擷取和發佈作業的行為,併為平臺之間的轉換提供更多彈性。
若要 擷取.dacpac 並包含數據,請使用 /p:ExtractAllTableData=true 屬性。 擷取作業會建立一個.dacpac,其中包含源資料庫的架構和數據。 屬性 /p:ExtractReferencedServerScopedElements=false 會排除在 Fabric 中 SQL 資料庫中不支援的伺服器範圍元素。 下列命令會從 Fabric 的現有 SQL 資料庫中擷取一個包含資料的 .dacpac。
sqlpackage /action:extract /sourceconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive" /targetfile:"C:\extracted.dacpac" /p:ExtractAllTableData=true /p:ExtractReferencedServerScopedElements=false
若要發佈使用數據擷取出來的.dacpac,不需要額外的屬性。 不過,您可以使用數個屬性來控制發行作業的行為:
-
/p:AllowIncompatiblePlatform=true允許部署從不同平臺提取的.dacpac(例如,Azure SQL Database、SQL Server)。 -
/p:ExcludeObjectTypes=Logins;Users排除在 Fabric 中發行至 SQL 資料庫時可能會遇到相容性問題的物件類型。 如需可排除之物件類型的完整清單,請參閱 SqlPackage 發佈。
與 SqlPackage 匯入命令類似,在將 發行 .dacpac 至 Fabric 中的 SQL 資料庫之前,您需要在 Fabric 中建立資料庫。 您可以透過網狀架構入口網站或其他網狀架構介面建立資料庫。 下列命令會將擷取的 .dacpac 發佈至 Fabric 中的空白 SQL 資料庫:
sqlpackage /action:publish /sourcefile:"C:\extracted.dacpac" /targetconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive" /p:AllowIncompatiblePlatform=true /p:ExcludeObjectTypes=Logins;Users