我正在尝试使用 azure devops 中的发布管道将 dacpac 部署到 Azure SQL Server 中的数据库。通过将 Azure 对象名称添加为该数据库的 db_owner,我能够成功地将 dacpac 部署到一个数据库。 我对不同的 dacpac 重复了相同的步骤,但收到一条错误消息,指出访问失败。
2022-04-06T21:54:52.4823080Z Initializing deployment (Start)
2022-04-06T21:55:49.0595299Z Initializing deployment (Failed)
2022-04-06T21:55:49.0721494Z Time elapsed 0:00:57.89
2022-04-06T21:55:49.2784337Z ##[error]*** An error occurred during deployment plan generation. Deployment cannot continue.
2022-04-06T21:55:49.2883974Z ##[error]Login failed for user '<token-identified principal>'.
使用服务主体作为身份验证(使用服务主体的服务连接的 SPN) 数据库服务器:xyz DB数据库:xyz.a xyz.b
a 成功,但 b 在同一发布管道上失败。
看来脚本中已成功获取访问 token 。
最佳答案
一些 dacpac
部署成功,因为 dacpac
拥有 SG 中包含的权限,SG 被设置为 SQL 服务器的 AAD 管理员。
具有 AAD Admin SG 中未包含的权限的 dacpac
失败。解决方案是使用 sqlpackage.exe
标志删除权限对象:
/p:ExcludeObjectTypes=Users;ServerRoleMembership;ServerRoles;DatabaseRoles;RoleMembership;Users;Permissions
关于sql-server - Azure Release Pipeline DACPAC 部署期间登录失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71774892/