Как обновить пароль во всех поставках Windows File Share в SSRS - PullRequest
0 голосов
/ 05 июля 2018

У меня около 20 подписок на Windows File Share. Каждый раз, когда пароль меняется - мне приходится вручную обновлять пароль для каждой подписки на этот общий файловый ресурс.

Есть ли более простой способ сделать это?

Как обновить его в одном месте, и оно будет автоматически обновляться во всех подписках на общие файловые ресурсы?

enter image description here

Ответы [ 2 ]

0 голосов
/ 10 июля 2018

Я вижу, что каждый раз, когда создается новая подписка, хэшированные значения имени пользователя и пароля различаются для предыдущей подписки, даже если я использую одно и то же имя пользователя и пароль. У нас есть около 600 подписок, созданных для записи отчетов в общий файловый ресурс с использованием одной и той же учетной записи для доступа к нему, однако каждая из этих 600 подписок имеет различное хэшированное значение для имени пользователя и пароля. Что на самом деле определяет эти хэшированные значения?

0 голосов
/ 05 июля 2018

Кажется, нет более легкого пути - пока. Я могу дать вам некоторые кусочки, которые вам нужны, чтобы проложить путь.

Данные об имени пользователя и пароле хранятся в формате XML в поле ExtensionSettings ReportServer.dbo.Subscription таблица.

К сожалению, имя пользователя и пароль хранятся как

<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
...