如何在DacPac中包含数据

Gre*_*Gum 13 sql-server visual-studio-2012

在用于Visual Studio的Sql Server数据工具中,您可以创建Sql Server项目并导入数据库的结构.这非常有效.

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

我能够弄清楚的最接近的是使用Sql Server对象资源管理器为数据创建脚本,然后手动将该脚本添加到项目中.

当我看到Sql Server数据工具的演示时,然后显示发布一个项目,然后使用复制和粘贴将数据导入数据库.当然有更好的方法.

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

您可以从SSMS创建:1.DACPAK:选择您的数据库,右键单击Tasks-> Extract Data Tier App.2.选择数据库,右键单击Tasks-> Export Data Tier App.

Hei*_*ich 9

这与您提出的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
Run Code Online (Sandbox Code Playgroud)

您可以导入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
Run Code Online (Sandbox Code Playgroud)

如果你不想使用SqlPackage.exe,这个文章是旧的,但它有三种解决方法可能工作:

1)使用SSMS对象资源管理器中[服务器] /管理/数据层应用程序/ [应用程序名称]节点下的SSMS"升级数据层应用程序..."向导重新部署相同的.dacpac文件.升级向导提供了礼物复选框选项,用于在.dacpac文件中执行部署前和/或部署后脚本.启用部署前和部署后脚本选项,然后执行升级将产生预期结果.

2)使用SSMS查询窗口,SQLCMD.exe或simliar手动执行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").


Gre*_*Gum 6

多年以后,我终于明白了这一点:出口有两种类型:1.DACPAK - 仅包括结构,2.BACPAK包括数据和结构.

您可以从SSMS创建:1.DACPAK:选择您的数据库,右键单击Tasks-> Extract Data Tier App.2.选择数据库,右键单击Tasks-> Export Data Tier App.

  • 美好的一天Greg,从数据中提取DACPAC可从2012年开始(搜索由Adam Mahood在Microsoft官方团队博客下撰写的SSDT帖子).主要的不同是DACPAK就像一个数据库快照文件,它可以用于更新,而BACBAK更像是一个备份,用于创建新的数据库. (2认同)