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

Redgate SQL Source Control部署时如何忽略Database Roles

Redgate Source Control部署时生产库自定义Database Roles被重置的解决方案

问题描述

  • 现有数据库变更流程:通过Redgate Source Control实现数据库变更跟踪,提交源为测试数据库,最终部署目标为生产数据库
  • 生产环境特殊要求:需配置与测试库不同的Database Roles(配置路径:Database->Security->Roles->Database Roles),已手动完成生产服务器上对应数据库角色的自定义修改
  • 异常表现:每次向生产库部署变更时,即使本次同步未涉及对应特定角色,Database Roles都会被重置为修改前的状态
  • 已尝试的无效操作:在Comparison Options中找到用户角色相关筛选器,勾选忽略选项User's permissions and role memberships并部署该筛选规则后,后续部署变更到生产库时,数据库角色仍会被重置

经实测Larnu给出的答案可解决问题,此前排查遗漏了额外诱因:角色权限并未定义在角色配置项中,而是存放在schema.sql文件内,需要提交完整schema才能完成角色权限的提交识别。

根本原因

  1. 之前勾选的User's permissions and role memberships忽略规则,仅作用于用户层面的权限配置、用户与角色的成员归属关系,不会对Database Role对象本身的结构同步生效,因此无法阻止角色配置被覆盖
  2. 角色权限实际存储在schema.sql文件而非独立的角色配置节点下,如果未提交完整schema到版本控制,源端无法正确识别已有的角色权限配置,部署时就会用源端的默认配置覆盖生产端的手动修改

可行操作方案

  • 调整比较忽略规则:进入Comparison Options配置页,除用户权限相关选项外,额外勾选Database Roles对应的对象级忽略选项,配置生效后部署流程将不会同步、覆盖数据库角色本身的配置
  • 规范配置版本管理:
    • 先提交完整schema到版本控制仓库,确保源端能正确识别所有角色相关的基础配置
    • 避免直接在生产库手动修改配置后不做版本留痕,将生产环境差异化的角色配置写入后置部署脚本,设置该脚本仅在生产环境部署时执行,从流程层面避免自定义配置被同步操作覆盖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:06:22