似乎没有成为一个更简单的方法 - 但。我可以给你一些你需要的方式虽然片。
用户名和密码数据存储为ExtensionSettings领域ReportServer.dbo.Subscriptions表XML。
不幸的是,用户名和密码被存储为
<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
我看到,每一个新创建订阅的用户名和密码的哈希值,时间是即使我使用相同的用户名和密码,以前的订阅不同。我们创建使用相同的帐户来访问它写入到一个公共文件共享报告的大约600订阅,然而,这些600个订阅对用户名和密码不同的哈希值。什么是真正确定这些散列值?