【问题标题】:How to include data in a DacPac如何在 DacPac 中包含数据
【发布时间】:2013-11-06 18:17:40
【问题描述】:

在用于 Visual Studio 的 Sql Server Data Tools 中,您可以创建 Sql Server 项目并导入数据库的结构。这很好用。

是否也可以导入数据?例如,假设我有一个包含多种类型的类型表。我想在 Sql Server 项目中拥有这些数据,所以当我发布它时,它也会发布数据。

我能想到的最接近的方法是使用 Sql Server 对象资源管理器为数据创建一个脚本,然后手动将该脚本添加到项目中。

当我看到 Sql Server Data Tools 的演示,然后显示发布项目,然后使用复制和粘贴将数据获取到数据库中。肯定有更好的方法。

编辑 多年后,我终于弄清楚了:有两种类型的导出:1. DACPAK - 仅包含结构,2. BACBAK,包括数据和结构。

您可以从 SSMS 创建: 1. DACPAK:选择您的数据库,右键单击任务 -> 提取数据层应用程序。 2. 选择数据库,右键Tasks->Export Data Tier App。

【问题讨论】:

标签: sql-server visual-studio-2012


【解决方案1】:

多年后,我终于弄明白了:出口有两种类型:

  1. DACPAC - 仅包括结构
  2. BACPAC,包括数据和结构。

您可以从 SSMS 创建:

  1. DACPAC:选择您的数据库,右键单击任务 -> 提取数据层应用程序。
  2. BACPAC:选择数据库,右键单击任务 -> 导出数据层应用程序。

【讨论】:

  • 早上好 Greg,使用 2012 年的数据提取 DACPAC(在 SSDT 官方团队博客下搜索 Microsoft 的 Adam Mahood 撰写的帖子)。主要区别在于 DACPAK 类似于数据库快照文件,可以用于更新,而 BACBAK 更多的是备份,用于创建新数据库。
  • 这是一个使用名为 T 的表的数据创建 DACPAC 的工作示例:sqlpackage.exe /action:Extract /TargetFile:"E:\test.dacpac" /sourceDatabasename:RonenDB /sourceservername:。 \RonenServer /p:TableData=dbo.T
  • 还有一个区别是数据库中有sql登录时不能创建BACPAC。在这种情况下,应该使用包含数据的 DACPAC。
【解决方案2】:

这与您所要求的不完全来自 Visual Studio,但它可能是一种解决方法。如果您的数据库存在于开发服务器中,那么也许您可以使用 SqlPackage.exe Export 和 Extract 操作:

出口

默认情况下,所有表格的数据都将包含在 .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,this 文章已过时,但它提供了三种可行的解决方法:

1) 使用 SSMS 对象资源管理器的 [服务器]/管理/数据层应用程序/[应用程序名称] 节点下的 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”)。

【讨论】:

  • 错字:/p::ExtractAllTableData=true 应该是/p:ExtractAllTableData=true
猜你喜欢
  • 2013-10-24
  • 2021-09-11
  • 2018-07-23
  • 1970-01-01
  • 2020-03-11
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多