首页 > 解决方案 > Azure SQL 数据库 - 除非以 sql 管理员身份连接,否则无法删除/更新已注册的 dacpac

问题描述

这可能是 Azure 数据库的问题,但我希望有一个解决方案。

在 Azure 中创建 SQL 数据库时,服务器有一个 SQL 管理员帐户,在这种情况下,在配置时通过门户手动配置该帐户。这只能是经过 SQL 身份验证的用户。

当然,我也有一个 AAD 组/用户配置为 AD Admin。

我还使用 SSDT 设置了自动部署。当我尝试将 DACPAC 注册为部署的一部分时会出现问题,但如果我使用 AD 帐户进行部署,则只有在第一次部署之后。它尝试更新已注册的数据层应用程序,但收到一条错误消息,指出它已经存在。如果我使用 SQL Authenticated SQL Admin 用户进行部署,则部署成功。

出于几个原因,我想使用 AD 帐户进行部署,尤其是能够创建其他包含的 AD 用户,这是 SQL Authenticated 用户无法做到的。

如果我以 SQL 用户身份连接,我可以在 SSMS 中删除注册的 dacpac,但是当我尝试使用 AD 用户这样做时,我得到:

当前用户对 SQL Server 实例没有足够的权限来删除数据层应用程序。用户必须是与数据层应用程序关联的数据库的数据库所有者。

我知道数据层应用程序信息存储在虚拟主数据库中。例如

select * [master].[dbo].[sysdac_history_internal] 
select * [master].[dbo].[sysdac_instances_internal]

看起来您需要在主数据库上拥有 db_owner 才能以这种方式使用 DAC,但唯一可以成为 db_owner 的用户是经过 SQL 身份验证的 SQL Admin。

因此,除非我可以创建一个可以执行此操作的包含 AD 用户,否则我认为我不能使用 dacpac 注册,这真的很遗憾,因为漂移检测是使用 SSDT 的真正卖家。

如果有人知道如何管理这个,我会非常感激听到它。

标签: sql-serverazure-sql-databasesql-server-data-toolsdacpac

解决方案


推荐阅读