簡體   English   中英

如何在 DacPac 中包含數據

[英]How to include data in a DacPac

在 Visual Studio 的 Sql Server Data Tools 中,您可以創建一個 Sql Server 項目並導入數據庫的結構。 這非常有效。

是否也可以導入數據? 例如,假設我有一個包含多種類型的 Type 表。 我想在 Sql Server 項目中有這些數據,所以當我發布它時,它也會發布數據。

我能想到的最接近的方法是使用 Sql Server 對象資源管理器為數據創建一個腳本,然后手動將該腳本添加到項目中。

當我看到Sql Server Data Tools 的demo 時,然后顯示發布一個項目,然后使用復制和粘貼來獲取數據到數據庫中。 當然還有更好的方法。

編輯多年后,我終於弄清楚了:有兩種類型的導出:1. DACPAK - 僅包含結構,2. 包含數據和結構的 BACBAK。

您可以從 SSMS 創建: 1. DACPAK:選擇您的數據庫,右鍵單擊 Tasks-> Extract Data Tier App。 2. 選擇數據庫,右鍵單擊任務-> 導出數據層應用程序。

正如您所問的,這並不完全來自 Visual Studio,但這可能是一種解決方法。 如果您的數據庫存在於開發服務器中,那么您可以使用SqlPackage.exe ExportExtract操作:

出口

默認情況下,所有表的數據都將包含在 .bacpac 文件中。

SqlPackage.exe 導出操作將實時數據庫從 SQL Server 或 Windows Azure SQL 數據庫導出到 BACPAC 包(.bacpac 文件)。 默認情況下,所有表的數據都將包含在 .bacpac 文件中。 或者,您可以僅指定要導出數據的表的子集。 即使為導出指定了表的子集,導出操作的驗證也可確保 Windows Azure SQL 數據庫與完整目標數據庫的兼容性。

sqlpackage.exe /action:Export /TargetFile:"test.bacpac" 
    /sourceDatabasename:test 
    /sourceservername:.\testserver

您可以導入您的bacpac文件https://msdn.microsoft.com/en-us/library/hh710052.aspx

提取物

使用用戶表數據創建 DACPAC

sqlpackage.exe /action:Extract /TargetFile:"test.dacpac" 
    /sourceDatabasename:test 
    /sourceservername:".\testserver"
    /p:ExtractAllTableData=true

如果您不想使用 SqlPackage.exe這篇文章很舊,但它有三個可能有效的解決方法:

1) 在 SSMS 對象資源管理器中的 [Server]/Management/Data-tier Application/[Application Name] 節點下,使用 SSMS 的“升級數據層應用程序...”向導重新部署相同的 .dacpac 文件。 升級向導會顯示復選框選項以執行 .dacpac 文件中的部署前和/或部署后腳本。 啟用部署前和部署后腳本選項,然后執行升級將產生預期結果。

2) 使用 SSMS 查詢窗口、SQLCMD.exe 或類似工具手動執行 DACPAC 部署前和/或部署后 T-SQL 腳本文件。 這要求 DACPAC 作者將部署前/部署后腳本與 DACPAC 文件一起發送。 或者,可以使用 Microsoft DacUnpack.exe 實用程序或 ZIP 文件實用程序(將文件擴展名從 .dacpac 重命名為 .zip 后)提取部署前/部署后腳本。

3) 使用 MSBuild.exe(v4.0.30319.1 或更高版本)或 Visual Studio 2010 Premium SP1(或更高版本)部署“SQL Server 數據層應用程序”項目文件。 (例如:“msbuild /Target:Deploy DeploymentDemo.dbproj”)。

多年后,我終於弄明白了:有兩種類型的出口:

  1. DACPAC - 僅包含結構
  2. BACPAC 其中包括數據和結構。

您可以從 SSMS 創建:

  1. DACPAC:選擇您的數據庫,右鍵單擊任務-> 提取數據層應用程序。
  2. BACPAC:選擇數據庫,右鍵單擊任務-> 導出數據層應用程序。

暫無
暫無

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

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