问题标签 [dacpac]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1381 浏览

sql - 通过 SqlPackage.exe 更新数据层应用程序版本

我目前正在使用 SqlPackage.exe通过命令行自动部署我的应用程序数据库,但无法找到更新我的数据层应用程序版本的方法

(发展,当然……)

http://msdn.microsoft.com/en-us/library/hh550080%28v=vs.103%29.aspx

我正在使用 /Action:Publish 来推送我新建的 *.dacpac,但版本始终保持在 v1.0.0.0,如果这是不可能的?如何更改 ExtendedProperty?

我只想通过查看数据库来参考安装的版本。

有任何想法吗?

0 投票
2 回答
3879 浏览

c# - 如何遍历 dacpac

我们希望将 dbproj 升级到 sqlproj,以便我们可以将其指向新的 SQL 2012 数据库。我们现在有一个程序可以读取 .dbschema xml 文件以查找所有表和列并从中检索信息。我们使用这些数据来构建我们自己的自定义类。

新的 sqlproj 文件现在生成一个 dacpac,我们要对其进行查询以获取我们需要的数据。我编写了以下内容来尝试遍历 dacpac 并获取我需要的信息:

我不知道我这样做是否正确,或者是否有更好/更简单的方法。我不确定要在 Google/SE 上搜索什么,也找不到任何示例。

我可以看到变量列有一个名为 ContextObject 的非公共成员,它是一个 Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlSimpleColumn。如果我可以访问这个对象,那么我就可以从中提取我需要的所有信息。Table 也有一个类似的 ContextObject 可以帮助我。

无论如何,目前这会打开 dacpac 并检索所有表和列名。我得到的数据的一个例子是:

基本上,我想做以下其中一项:

  1. 访问 ContextObject 以获取 Microsoft.Data.Tools.Schema.Sql.SchemaModel.* 对象或
  2. 从 ObjectType 属性中获取属性和元数据的值或
  3. 以更简单的方式从头开始获取这些信息

我们需要获取诸如列类型、是否可以为空以及列的比例和精度等信息

0 投票
1 回答
1361 浏览

powershell - 使用 DACFx 3.0 API 升级 DACPAC - 如何检查现有数据库的当前 DAC 版本?

我目前正在重写我团队的数据库部署 Powershell 脚本以使用 DACFx 3.0 API 而不是 2.0。Microsoft.SqlServer.Dac.DacServices使用新的控制器类,我已经设法使 DACPAC 升级成功运行。

剩下的唯一问题是:如何从现有数据库中获取当前的 DACPAC 版本号?

作为我们部署脚本的一部分,我们将其与我们要升级到的 DACPAC 版本进行比较,以确定是否需要部署。这也用于决定是否运行与数据库相关的测试,因此我们可以减少大量构建时间。

旧的 DacFx2.0 API 位于Microsoft.SqlServer.Management.Dac命名空间中,因此在旧的 Powershell 脚本中,我们只是创建了一个DacStore从数据库连接中创建了一个对象并从中获取 Version 属性:

我们的旧 POWERSHELL 脚本

现在在 3.0 中的问题是,API 存在于Microsoft.SqlServer.Dac命名空间中,并且“不再使用以前版本中的DacStoreDacExtractionUnit类,大多数内容都已重构为全新的DacServices控制器类。(src)”

我还没有DacStoreDacServices课堂上找到等效的,所以到目前为止我不知道如何检索当前的 DAC 版本。我试过搜索 MSDN 文档,但他们所有的 Powershell 部分仍然引用旧的 DACFx2.0 API。(例如:这里)。

如果有人可以帮助我,将不胜感激。谢谢!

0 投票
2 回答
3381 浏览

visual-studio-2012 - DACPAC 不包括复合对象

我有一个 VS2012 数据库项目,其中包括表、存储过程、视图等。

然后我有第二个数据库项目,其中包含对第一个项目的数据库引用。我已确保从“项目属性 -> 调试 -> 高级”菜单中选择了“包括复合对象”选项。

当我构建第二个项目并获取生成的 DACPAC 文件并通过 SSMS2012 部署它时,它不会创建第一个项目的对象。

我错过了什么吗?为什么复合对象不包含在 DACPAC 中?

0 投票
4 回答
51369 浏览

sql - SQL 脚本中的错误:每批只允许一个语句

我有 4 个 sql 脚本,我想在 PostDeployment 的 DACPAC 中运行,但是当我尝试为其中 3 个构建 VS 项目时,我收到此错误:

脚本仅包含INSERT数据库上不同表中的语句。它们的结构都是这样的

仅在不同的表和不同的数据上。

我的问题是,当所有脚本在语法和操作方面都相同时,为什么 VS 会抱怨其中的 3 个?

PS:按照错误提示在语句之间添加“GO”不会做任何事情。

0 投票
1 回答
256 浏览

sql-server - 不支持用于 xml 的 dacpac

当尝试从包含使用“for xml”的函数的数据库中导出数据层应用程序或 dacpac 时,每个函数和依赖于该函数的每个对象都会失败,并且我无法创建 dacpac。向导将这些对象报告为不受支持。

数据库: SQL Server 2008 R2

函数失败的错误:

[dbo].[fn_FunctionName] () 失败取决于此数据库中不存在的对象“[XmlData].[value] (UnresolvedEntity)”。

示例查询:

0 投票
3 回答
6450 浏览

sql-server - 什么是“具有指定 instance_id 的 DacInstance 不存在。(Microsoft SQL Server,36004)”?

我正在尝试使用 dacpac 升级远程 SQL Server 2012 数据库,但收到以下消息:具有指定 instance_id 的 DacInstance 不存在。(微软 SQL 服务器,36004)。我试图在互联网上搜索,但找不到任何东西。有任何想法吗?

在此处输入图像描述

0 投票
1 回答
927 浏览

.net - 在 dacpac 文件中包含 DLL

我希望使用 SMO 将 dacpac 部署到远程 SQL 环境中,远离我自己的开发机器。在我的项目中,我引用了一个 .dll 文件,当我按下“构建解决方案”时,该文件会输出到我的构建目录中。

是否可以将 .dll 文件与 dacpac 捆绑在一起,或者我是否必须将引用的文件与 dacpac 文件一起放到远程服务器上的指定文件夹中才能引用它们?

目前我在远程环境中部署时收到错误“没有为参考 dll 提供文件”,因为即使我将“复制本地”设置为 true,dacpac 也没有在其中包含 dll。

打开 Model.xml 时,我可以看到该文件指向我的硬盘驱动器上的引用位置,如何更改它以动态查看输出的 dacpac 文件夹?

谢谢

0 投票
1 回答
2825 浏览

sql-server - 如何从两个 dacpacs 获取数据更改作为更新脚本

从两个 .dacpac 文件中,我可以使用以下命令获取更新脚本

sqlpackage.exe /Action:Script /SourceFile:"C:\Test\bin\Debug\Test.dacpac" /TargetServerName:localhost\DenaliRC0 /TargetDatabaseName:deploy_Test

然而,这只会产生 DDL 更改(模式更改)。但这不包括任何数据更改。无论如何我可以从两个 dacpacs 中获取这些数据更改 (DML) 吗?

Flowing 是我用来获取架构更改的 java 代码。

0 投票
1 回答
845 浏览

sql-server-2008 - SSDT 项目构建失败 - 在调试模式下拒绝访问 dacpac 文件

我正在尝试构建一个 SSDT 项目。运行“构建”时收到以下错误消息:

  • 拒绝访问路径“whateverMyPathIs\bin\debug\myProjectName.dacpac”。
  • 03061:无法删除文件“whateverMyPathIs\bin\debug\myProjectName.dacpac”。拒绝访问路径“whateverMyPathIs\bin\debug\myProjectName.dacpac”。C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets

我注意到的事情:

  • 当我在“发布”模式下构建项目时,我没有收到上述错误消息。
  • 我尝试使用 Process Explorer 来查看 dacpac 文件是否正在被任何其他进程使用并且无法找到任何内容。
  • 从项目设置/构建中,如果我将“构建输出路径”从“bin/debug”更改为其他不同的地方,构建工作正常。
  • 重新启动机器后,我现在只收到有关“拒绝访问......”的第一条错误消息。没有出现以 03061 开头的错误消息。

我正在使用 Visual Studio 2012、SQL 2000 R2、SSDT 2012