首页 > 解决方案 > 如何在 SSRS 中更新所有 Windows 文件共享交付的密码

问题描述

我有大约 20 个 Windows 文件共享订阅。每次更改密码时 - 我必须手动更新每个文件共享订阅的密码。

有更简单的方法吗?

就像在一个地方更新它,它会在所有文件共享订阅中自动更新?

在此处输入图像描述

标签: sql-serverreporting-servicespasswordssubscription

解决方案


似乎还没有更简单的方法。不过,我可以给你一些你需要的东西。

用户名和密码数据作为 XML 存储在ExtensionSettings字段ReportServer.dbo.Subscriptions表中。

不幸的是,用户名和密码存储为

<ParameterValues>
  <ParameterValue>
    <Name>PATH</Name>
    <Value>\\SERVER_NAME\files\TEST\Automation\Dropoff</Value>
  </ParameterValue>
  <ParameterValue>
    <Name>FILENAME</Name>
    <Value>MEMBERS</Value>
  </ParameterValue>
  <ParameterValue>
    <Name>FILEEXTN</Name>
    <Value>True</Value>
  </ParameterValue>
  <ParameterValue>
    <Name>USERNAME</Name>
    <Value>AABBEItDo8/msevjegsUsAlJf5eo1fTFjFe16FNk94Z+7hQvqsSHgW93DHqSL3rF2iHOCiwkvV9kEFGeUMG0tW4VV6gdQghXup+2V3BZHwo=</Value>
  </ParameterValue>
  <ParameterValue>
    <Name>PASSWORD</Name>
    <Value>AABBpjdpbU2qN46RzMvYGfVPIW5B3cOlFtzXeIo8Sfn3uOSH5LiXbfptxYuFMNgR+5uYpHnh+6Y5oY4GDn6TXwOSYa5La+40</Value>
  </ParameterValue>
  <ParameterValue>
    <Name>RENDER_FORMAT</Name>
    <Value>PDF</Value>
  </ParameterValue>
  <ParameterValue>
    <Name>WRITEMODE</Name>
    <Value>Overwrite</Value>
  </ParameterValue>
</ParameterValues>

我还没有找到一种方法来确定哈希值应该是什么,而无需先更改哈希值,然后查看扩展设置以找到密码。您可以手动更新一个,然后查看新值以更新其余部分。

您将需要一个循环来一次浏览您想要的订阅。

这是一些更新密码的代码:

DECLARE @PASSWORD AS VARCHAR(150) = 'AABBpjdpbU2qN46RzMvYGfVPIW5B3cOlFtzXeIo8Sfn3uOSH5LiXbfptxYuFMNgR+5uYpHnh+6Y5oY4GDn6TXwOSYa5La+40'
DECLARE @EXTENSION_SETTINGS XML

--Add loop to go through all subscriptions
SELECT @EXTENSION_SETTINGS = ExtensionSettings 
FROM ReportServer.dbo.Subscriptions
WHERE SubscriptionID = @SUBSCRIPTION_ID;

SET @EXTENSION_SETTINGS.modify('replace value of (/ParameterValues/ParameterValue[Name="PASSWORD"]/Value/text())[1] with sql:variable("@PASSWORD")');

UPDATE dbo.Subscriptions
SET ExtensionSettings = CAST(@EXTENSION_SETTINGS AS VARCHAR(8000))
WHERE SubscriptionID = @SUBSCRIPTION_ID

--Next in Loop

推荐阅读