小编Ash*_*Ash的帖子

SSDT (dacpac) 项目中的动态数据库参考

有没有一种方法可以在运行时导出 SQL Server 数据库项目 (Dacpac) 中的数据库引用?

我们正在构建一个使用 Dacpac 来部署数据库对象的产品。

我们的产品实施团队还使用 Dacpac 项目,方法是将数据库引用添加到产品 Dacpac 文件,然后将他们自己的附加对象添加到项目中。

我们面临的问题是 - 每次实现需要指向较新的产品发布版本时,必须手动更改实现 dacpac 中的父 dacpac 引用以引用新产品 dacpac 的新文件路径(在新版本)。我们在每个实施中都有多个实施团队和多个数据库项目。

有没有什么方法可以在运行时使用变量或参数或类似的东西导出数据库项目中的数据库引用(*.dacpac)?

database-project dacpac sql-server-data-tools

5
推荐指数
1
解决办法
5092
查看次数

使用 sqlcmd 在事务中执行 DAC 生成的部署脚本

我们有一个 DACPAC (sqlproj) 解决方案,其中包含一些表和一个运行一些 DML 查询的部署后脚本。如果 DML 查询失败(我提出严重性 = 20 的错误),我想回滚所有更改 - 包括 dacpac 完成的 DDL 更改和部署后文件更改。当我升级现有目标数据库时,这特别有用。

我正在努力在 DACPAC 发布时进行原子数据库升级 - 仅当部署后脚本中的所有内容都成功时,才应发布 DACPAC 解决方案中提到的所有 DDL 更改。

由于 DACPAC DDL 更改是在调用部署后脚本之前提交的,因此我认为使用 DacServices.GenerateDeployScript 将所有 DAC 更改生成为单个脚本文件将会有所帮助。看起来不太直截了当。

有没有人尝试过类似的事情(并且失败/通过)?

我面临着许多挑战,例如...创建/更改数据库不应该在事务中。回滚根本没有发生。

[编辑 11 月 10 日]:将 dacpac 生成的部署脚本粘贴到此处,以便我可以更好地解释我的问题(希望如此)

/*
Deployment script for 9Nov

This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
*/

GO
SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, …
Run Code Online (Sandbox Code Playgroud)

dac dacpac sql-server-data-tools

5
推荐指数
0
解决办法
1028
查看次数