将SQL Server 2012 DACPAC部署到镜像数据库

问题描述 投票:1回答:1

我们使用TFS 2015 Release Management将更新部署到各种环境,其中一个发布步骤是使用“SQL Server数据库部署”任务和发布配置文件将DACPAC应用于目标SQL Server 2012数据库环境。

在我们的每个环境中,我们都有一对镜像数据库服务器,其中一个是“主”,另一个是“镜像”。

用于管理发布配置文件的Visual Studio中的GUI似乎不提供“故障转移伙伴”,因此我手动编辑了发布配置文件的XML文件,以将“故障转移伙伴”元素添加到连接字符串。

但是,似乎发布配置文件方法不支持镜像数据库连接字符串,因此当我们的数据库在连接字符串中标识为“故障转移伙伴”的节点上为主节点时,DACPAC部署(使用sqlpackage.exe)将失败,错误:“无法打开数据库”DatabaseName“登录请求”。我们已经发现它忽略了“故障转移伙伴”,并且只是尝试连接到非活动节点。

我还尝试使用发布配置文件在Visual Studio 2015中运行部署,并且当数据库位于标识为故障转移伙伴的节点上时发生了同样的错误。

所以我的问题是,如何在发布配置文件和sqlpackage.exe中使用DACPAC在部署时更新相应的数据库,其中数据库可能是镜像对中任一节点上的主数据库?

database visual-studio-2015 sql-server-2012 release-management dacpac
1个回答
0
投票

结果是错误信息:

无法对数据库“...”执行操作,因为它涉及数据库镜像会话或可用性组。参与数据库镜像会话或可用性组的数据库不允许执行某些操作

是由于尝试更改数据库属性而与dacpac部署无关。导致ALTER DATABASE语句的不匹配项目设置将在部署期间导致该错误。在我们的示例中,Deploy database properties的发布配置文件中的选项与不同于目标数据库的SQL项目恢复数据库设置相结合,导致生成ALTER DATABASE [$(database)] SET RECOVERY SIMPLE...语句,除非禁用镜像,否则不会部署该语句。

尝试更改SQL项目属性以匹配目标数据库,或选择不使用以下标志部署数据库属性:/p:ScriptDatabaseOptions=False或从UI:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.