TL; DR .
Действия по воспроизведению, создайте резервную копию вашего C:\Program Files\Microsoft SQL Server\MSRS13.SSRS\Reporting Services\ReportServer\RsReportServer.config
Запустите эту команду, чтобы обновить строку подключения в конфигурации SSRS:
C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn>rsconfig -c -s <ServerName> -i <instanceNameIfNotDefault> -d "reportserver$ssrs" -a SQL -u sa -p "YourSAPassword" -t
Теперь перейдите на веб-сайт SSRS.и это не работает!Чтобы исправить это, либо восстановите ваш конфигурационный файл, либо запустите средство SSRS GUI, и оно работает!
Как работает утилита RsConfig?
Фон
После того, как я установил SSRS на сервере Windows 2016 и восстановил 2 базы данных, мне нужно изменить строку подключения в файле конфигурации SSRS, указав имя / экземпляр нового сервера SQL.
Проблема
Когда я пытаюсь изменить зашифрованную строку подключения в файле C:\Program Files\Microsoft SQL Server\MSRS13.SSRS\Reporting Services\ReportServer\RsReportServer.config
с помощью утилиты RSConfig:
C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn>rsconfig -c -s Server0012 -i SSRS -d "reportserver$ssrs" -a SQL -u sa -p "P@ssw0rd!" -t
Изменяет DsnСтрока подключения в RsReportServer.config.
1034 *
До: 1037 * AQAAANCMnd8BFdERjHoAwE / Cl + sBAAAAE + ТСК / 4Vs0a0fdH0tCY8kgQAAAAiAAAAUgBlAHAAbwByAHQAaQBuAGcAIABTAGUAcgB2AGUAcgAAABBmAAAAAQAAIAAAAC2DBxZFsfVB16r0e3 ...... * 1039 *
После того, как: 1042 *AQAAANCMnd8BFdERjHoAwE / Cl + sBAAAAE + ТСК / 4Vs0a0fdH0tCY8kgQAAAAiAAAAUgBlAHAAbwByAHQAaQBuAGcAIABTAGUAcgB2AGUAcgAAABBmAAAAAQAAIAAAAO2nOjFDJMo ........ * 1044 * Однако после этого изменения, просматривающих результатов SSRS Сайта в ошибке:
отчетаСервер не может подключиться к своей базе данных.Убедитесь, что база данных работает и доступна.Вы также можете проверить подробности в журнале трассировки сервера отчетов.
Если я запускаю средство настройки служб отчетов SQL (GUI)) и измените просмотр строки подключения Dsn на веб-сайт SSRS!
Очевидно, что это меняет Dsn, но я не могу понять, что еще он делает, пока работает инструмент с графическим интерфейсом.Я использовал ProcessMonitor и видел, что инструмент с графическим интерфейсом НЕ использует утилиту RSConfig.exe, он использует сам RsConfigTool.exe!Поэтому я даже не могу захватить аргументы командной строки о том, какой должна быть строка команды / соединения.Кроме того, каждый раз, когда мы меняем строку подключения, генерируется новая случайная строка, так что не знаете, как сделать сравнение фактического с ожидаемым.
Я сделал WinDiff ключей реестра и, кроме некоторых зашифрованных шестнадцатеричных различий, ничего не выделялось.
Я запускаю SQLProfiler, и в моем скрипте PowerShell я эмулировал несколько грантов, например:
$sqls += @"
USE [ReportServer`$SSRSTempDB]
if not exists (select * from sysusers where issqlrole = 1 and name = 'RSExecRole')
BEGIN
EXEC sp_addrole 'RSExecRole'
END;
GO
Моя догадка - это знак $ в имени базы данных SQL и@ в «вымышленном / смоделированном» пароле не экранируются при запуске команд, например:
$MachineName = "server0012"
$instanceName = "SSRS"
$saPassword = "P@ssw0rd!"
$rsConfigPath = "C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\rsconfig.exe"
$setupArgs = -join('-c -s "', $MachineName,'" -i "', $instanceName,'" -d ','"ReportServer`$SSRS" -t -a SQL -u "sa" -p "', $saPassword,"""")
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
Write-Host $rsConfigPath $setupArgs
$args = $setupArgs.Split(" ")
& "$rsConfigPath" $args
Restart-Service -Force "SQL Server ($instanceName)"
Когда я запускаю эти ванильные команды в командной строке (не нужно экранировать символы PowerShell):
rsconfig -c -s Server0012 -i SSRS -d "reportserver$ssrs" -a SQL -u sa -p "P@ssw0rd!"
Изменяет строку подключения Dsn, но при переходе на веб-сайт SSRS выдает ту же ошибку (см. Выше).
Как узнать, что еще делает RsConfigTool.exe при изменении текущей базы данных сервера отчетов?Или какие-то догадки, почему строка подключения, сгенерированная с помощью утилиты RSConfig, вышла из строя - я пробовал много разных комбинаций, кажется, что только RSConfigTool действительно может это сделать?
Примечание 1:
I'mСценарий это все как проект DevOps, и мы запекаем эти изображения с упаковщиком, так что ничего нельзя сделать вручную.
Примечание 2:
Компьютер присоединен к домену и переименован после установки SQL.Так что, используя файл Configuration.ini, я не думаю, что он будет работать.