You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Bicep/手动方式无法设置SQL Server数据库锁:权限问题求助

SQL Server数据库设置资源锁时的权限错误解决

问题描述

我尝试用以下Bicep代码为SQL Server数据库添加删除锁:

resource SqlDatabase_DeleteLock 'Microsoft.Authorization/locks@2020-05-01' = {
  scope: primaryDatabase
  name: 'Do Not Delete'
  properties: {
    level: 'CanNotDelete'
    notes: 'Created by SqlDatabase Bicep template deployment'
  }
}

运行代码时遇到权限错误:

'Authorization failed for template resource 'Do Not Delete' of type 'Microsoft.Authorization/locks'. The client 'xxx' with object id 'yyy' does not have permission to perform action 'Microsoft.Authorization/locks/write' at scope '/subscriptions/xyz/resourceGroups/rg/providers/Microsoft.Sql/servers/server/providers/Microsoft.Authorization/locks/Do Not Delete'

手动添加锁时也出现相同的权限错误,请问问题出在哪?

解决办法

这个错误的核心是当前操作的账号(或服务主体)没有足够的权限创建/修改资源锁,具体需要做以下几点:

  • 确保账号拥有资源锁操作权限:需要给账号分配包含Microsoft.Authorization/locks/write权限的角色,比如内置的「所有者(Owner)」「参与者(Contributor)」角色,或者专门的「资源锁管理员(Lock Contributor)」角色;如果用自定义角色,要确保角色里包含Microsoft.Authorization/locks/*权限(覆盖读写删全操作)。
  • 检查权限的作用范围:权限需要覆盖目标SQL数据库的层级(或者其父层级,比如SQL服务器、资源组、订阅,RBAC权限会向下继承)。比如只给资源组读者权限的话,肯定无法操作数据库层级的锁。
  • 等待权限生效:刚分配的RBAC权限通常需要1-5分钟才能完全生效,不要刚加完权限就立刻重试操作。
  • 确认操作主体的一致性:如果用服务主体部署Bicep,要确保给这个服务主体分配了对应权限,而不是只给登录的用户账号授权。

内容的提问来源于stack exchange,提问作者user989988

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 00:42:40