问题标签 [sqlpackage]

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 投票
0 回答
150 浏览

asp.net - SqlPackage.exe 抛出一个错误,破坏了我的部署脚本

这个错误信息是什么意思?错误 MSB3073?

0 投票
1 回答
382 浏览

dacpac - 尝试更改 FILESTREAM 列时 sqlpackage 中断

我有一个 SQL 数据库项目,我最近在其中修改了一个FILESTREAM列以允许空值。我正在尝试将项目的 dacpac 发布到该列已经存在的数据库,作为文件流列,但当前是NOT NULL.

我正在使用 sqlpackage.exe 命令行工具(版本 12.0.2882.1)执行发布。但是,它会产生错误:

错误中的 sql 看起来生成的脚本正在尝试删除列上的 FILESTREAM 属性,我猜这就是 SQL Server 抱怨的原因......但它为什么要这样做?我的数据库项目仍然具有标记为的列FILESTREAM

0 投票
2 回答
2581 浏览

sql-server - DACPAC 和 SQL 序列

我有一个包含许多 SQL 序列的 Visual Studio 数据库项目 (DACPAC)。但是,当我部署 DACPAC 时,它总是将序列值重置为创建脚本中包含的默认值(在本例中为 1)。例如

谁能建议一种方法来指示 DACPAC 忽略序列起始值,或者让 DACPAC 恢复正确值作为部署后步骤的某种方法?

提前致谢

0 投票
3 回答
2941 浏览

sql - 在部署 dacpac 时,如何防止 SqlPackage.exe 删除和重新创建约束?

我有一个 Visual Studio sql 项目,其表定义如下:

当我使用“脚本”命令定位预先存在的 SQL 数据库时

然后我得到以下生成的 SQL,即使约束在之前和之后具有相同的名称和定义:

(我试图防止这种多余的重新创建的主要担心是因为我偶尔会看到“超过锁定请求超时期限。”在实际部署/发布期间尝试删除约束时出现错误)

0 投票
0 回答
1151 浏览

database - SSDT:增量更新脚本,包括使用 sqlpackage.exe 的数据

我有一个带有 VS2015 的 SSDT 项目,并使用 SqlPackage.exe 生成部署脚本和增量更新脚本。数据库项目包含部署后脚本。这是我为数据库安装生成主脚本的方式:

这将输出我使用sqlcmd.exe运行的database.sql文件。该脚本文件还包含我所有的部署后脚本(插入、更新等)

一旦我有了新版本的数据库,我就从之前拍摄的 dacpac 快照创建增量更新脚本:

这很好用,但是,增量更新脚本不包含元数据/参考数据(例如国家、州、货币等的列表)。

有没有办法告诉 SqlPackage 生成包含表引用数据的增量脚本?

0 投票
1 回答
2172 浏览

msbuild - 在 DacPac 中发布部署参数

我正在通过构建一个 sql 项目在 TeamCity 中创建一个 DacPac。生成的 DacPac 有一个部署后脚本,我想在部署时或在使用版本号创建它之前对其进行更新。是否可以在 TeamCity 中或在部署 DacPac 时设置此参数?

sqlpackage.exe 命令行看起来像

其中“#{}”是章鱼部署服务器上的参数。SQL 项目中的部署后脚本如下所示:

我一直在这样做的方式是使用 teamcity 上的文件内容替换器将“z”替换为版本号,但这种方法并不理想。如果另一个开发人员使用不符合文件内容替换器构建功能中使用的正则表达式的不同参数签入文件,这可能会在未来导致错误。

0 投票
2 回答
4221 浏览

sql-server - SQLPackage 部署后脚本未运行

我在 SQL-Server 2012 上使用带有 TFS 的 Visual Studio 2013。具体来说,我在 VS 中使用 SQL-Server Data Tools 进行 SQL 开发,而不是在 SQL-Server Management Studio 中使用。

简而言之,SQLPackage 似乎不执行 Post-Deployment SQL 脚本。

具体情况是:我有一个 VS SQL 数据库项目“ADMIR”,它在过去几周一直在开发,并且在 SQL 和它的部署方面逐渐变得更加复杂。该数据库包括一些动态生成的表,因此我引入了 SQL 命令变量来引用两个数据库(一个是实际的 ADMIR 数据库,另一个是同一服务器上的数据库)。因此,我为这两个数据库添加了对 dacpacs 的数据库引用。

ADMIR 项目将构建良好。

还有一个 Post-Deployment SQL 脚本,在引入 SQL 命令变量之前,它也可以正常运行并初始化各种表数据。

但是,我的理解是 SQL 命令变量不适用于 VS/TFS 发布操作,因为不再执行部署后脚本。

没关系,因为最终我想编写脚本/自动化 ADMIR 项目的发布/部署,所以我已经转向使用 SQLPackage 来执行发布。

同样,这似乎工作正常 - My SQL Package 批处理命令将执行并记录错误/输出(如适用)并将我的 Build dacpac 成功发布到目标服务器。但是,它似乎完全忽略了部署后脚本。此外,输出报告未设置 SQL 命令变量。

这些是各种脚本和配置设置:

SQLPackage 批处理命令:

ADMIR.DEV.publish.xml 发布配置文件:

Script.PostDeploy.sql(前几行):

运行构建时,我可以看到 ADMIR_Create.sql 脚本确实包含所有 Post-Deploy 语句。即我可以在这个文件中看到上面的代码行。

** ADMIR.sqlproj 文件包含部署后脚本和 SQL 命令变量:**

发布日志,Publish_Output.txt:

所以:

  1. 为什么没有执行部署后脚本?我没有看到任何与之相关的日志记录信息。

  2. 为什么 SQLPackage 输出日志指出 SQL 命令变量未定义,当它们在发布配置文件中时?

  3. 可能与 2 相关。.sqlproj 文件是否正确将 SQL 命令变量的值作为变量本身,例如 $(SqlCmdVar__7)?__6 和 __7 来自哪里?

感谢您的帮助!

0 投票
1 回答
1071 浏览

sql-server - 如何使用 Build/Assembly 版本自动填充 SQLCMD 变量

将 Visual Studio 2013 与 TFS 和 SQL Server 2012 & 2014 以及 SQLPackage.exe 与发布配置文件一起使用。

有谁知道是否/如何将 Build 版本或 Assembly 版本放入 SQLCMD 变量中?

即,我正在尝试获取 TFS/Visual Studio 拥有的关于 SQL 项目构建的任何系统级构建版本控制信息,并将其推送到 SQLCMD 变量中,然后将其插入表中。

我知道我可以显式定义一个 SQLCMD 变量,然后手动设置并增加它的值,但我想要项目的任何构建版本号。

我已经能够通过 MSBuild 获取程序集版本信息,详情如下:https ://social.msdn.microsoft.com/Forums/sqlserver/en-US/e0c93a55-d8bd-4a32-89d9-f46013fc1235/automatic-数据层应用程序上的版本增量?forum=ssdt

但这不在我的post-deploy.sql剧本范围之内。我尝试过简单地引用该$(IntermediateTargetAssembly)变量,但该项目不会构建,并且该变量未声明的错误。

0 投票
2 回答
353 浏览

sql - 在包含文件路径的 sqlpackage 中传递变量

所以我试图在 tfs 构建后直接执行 ps 脚本。当脚本在构建后运行时,会出现一个错误,指出源文件必须具有有效的 .dacpac 扩展名。下面是代码

抱歉,由于隐私问题,文件位置和文件夹名称已被赋予别名。

所以倒数第三个是 dacpac 出现错误的地方。所以请告诉如何传递文件路径,以免出现任何错误。并且仅供参考,路径不能被硬编码,因为文件夹在几个小时后自动创建了较新的版本。

0 投票
0 回答
629 浏览

sql-server - SQL Server Data Tools - SQLPackage Extract 在存在对称密钥时引发错误

我们正在尝试使用 SQLPackage.exe 创建一个数据库提取“dacpac”文件,以便在基于工作室的 SQL 服务器项目的上下文中使用。我们的目标是能够使用 SQL Server Data Tools 在源代码控制中管理我们的数据库架构并允许部署等。

我们遇到的问题是我们的一个目标数据库中存在对称密钥,导致 sqlpackage 每次都抛出此错误:

该命令如下所示:

但是我们每次都会收到这个错误:

我尝试了一些命令行技巧,例如使用 /p:ExcludeObjectType 但 Action:Extract 不允许使用此参数

我们实际上并不关心通过 SSDT 管理密钥,只是想忽略它们。请注意,数据库位于 SQL Server 2005 SP3 上,我使用的是与 Studio 2015 捆绑的 SSDT ...