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

如何用XML.Modify批量更新SSRS订阅表嵌套XML的TO/CC邮箱地址

批量更新SSRS Subscription表中ExtensionSettings的TO/CC邮箱

适用场景

针对SSRS ReportServer.dbo.Subscription表中ExtensionSettings列(XML类型),批量替换其中TO和CC参数对应的邮箱值为Test@domain.com。

假设XML结构(SSRS默认邮件订阅格式)

常见的ExtensionSettings XML结构如下:

<ParameterValues>
  <ParameterValue>
    <Name>TO</Name>
    <Value>original-to@example.com</Value>
  </ParameterValue>
  <ParameterValue>
    <Name>CC</Name>
    <Value>original-cc@example.com</Value>
  </ParameterValue>
  <ParameterValue>
    <Name>Subject</Name>
    <Value>Report Subscription</Value>
  </ParameterValue>
</ParameterValues>

批量更新SQL语句

步骤1:更新TO邮箱

USE ReportServer;
GO

UPDATE dbo.Subscription
SET ExtensionSettings.modify('
  replace value of (/ParameterValues/ParameterValue[Name/text()="TO"]/Value/text())[1]
  with "Test@domain.com"
')
WHERE ExtensionSettings.exist('/ParameterValues/ParameterValue[Name/text()="TO"]') = 1;
GO

步骤2:更新CC邮箱

USE ReportServer;
GO

UPDATE dbo.Subscription
SET ExtensionSettings.modify('
  replace value of (/ParameterValues/ParameterValue[Name/text()="CC"]/Value/text())[1]
  with "Test@domain.com"
')
WHERE ExtensionSettings.exist('/ParameterValues/ParameterValue[Name/text()="CC"]') = 1;
GO

关键说明

  • XPath定位逻辑:通过/ParameterValues/ParameterValue[Name/text()="TO"]精准匹配Name为TO的参数节点,再定位到其下的Value文本节点进行替换。
  • 条件过滤:WHERE子句确保只更新存在TO/CC参数的订阅记录,避免无意义操作。
  • 执行限制:XML.modify一次只能执行一个替换操作,因此需要分开更新TO和CC。
  • 前置操作:执行前务必备份Subscription表,建议先在测试环境验证脚本效果。
  • 权限要求:需要具备ReportServer数据库的UPDATE权限,以及对XML列的操作权限。

自定义调整

如果你的ExtensionSettings XML结构不同(比如根节点名称不同),只需修改XPath中的节点路径即可。例如若根节点是Settings,则将/ParameterValues替换为/Settings。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:40:35