Пример скрипта служб Reporting Services rs.exe для копирования содержимого между серверами отчетов

Область применения: SQL Server Reporting Services (2008 R2 и более поздней версии) Сервер отчетов Power BI

Эта статья содержит и описывает пример скрипта RSS служб Reporting Services, который копирует элементы содержимого и параметры с одного сервера отчетов SQL Server Reporting Services на другой сервер отчетов с помощью программы RS.exe . RS.exe устанавливается вместе со службами Reporting Services как в режиме работы в собственной системе команд, так и в режиме SharePoint. Скрипт копирует с одного сервера на другой элементы служб Reporting Services, например отчеты и подписки. Скрипт поддерживает как режим интеграции с SharePoint, так и собственный режим сервера отчетов.

Примечание.

Также доступен модуль ReportingServicesTools PowerShell с открытым кодом.

Скачивание скрипта ssrs_migration.rss

Скачайте скрипт с сайта GitHub Скрипт переноса RS.exe служб Reporting Services в локальную папку. Дополнительные сведения см. в разделе Использование скрипта данной статьи.

Поддерживаемые сценарии

Скрипт поддерживает как режим интеграции с SharePoint, так и собственный режим сервера отчетов. Скрипт поддерживает версии SQL Server 2008 R2 (10.50.x) и более поздних версий, а также Сервер отчетов Power BI.

Скрипт может копировать содержимое между серверами отчетов, работающих в одном или разных режимах. Например, можно запустить скрипт для копирования содержимого из сервера отчетов в собственном режиме SQL Server 2008 R2 (10.50.x) в сервер отчетов в режиме sql Server 2012 с пакетом обновления 1 (SP1) (11.0.3x) в режиме отчетов SharePoint. Можно запустить скрипт с любого сервера, на котором установлена программа RS.exe. Например, в таком развертывании можно сделать следующее.

  • Запустите RS.exe и скрипт НА сервере A.

  • Скопировать содержимое С сервера В.

  • НА сервер С

Имя сервера Режим сервера отчетов
Сервер A Нативный
Сервер B SharePoint
Сервер В SharePoint

Дополнительные сведения об утилите RS.exe см. в разделе Служебная программа RS.exe (SSRS).

Элементы и ресурсы, которые переносит скрипт

Скрипт не записывает существующие элементы содержимого с одинаковым именем. Если скрипт обнаруживает элементы с тем же именем на целевом сервере, который находятся на исходном сервере, отдельные элементы приводят к сбою сообщения и скрипт продолжается. В следующей таблице перечислены типы содержимого и ресурсов, которые скрипт может перенести в целевой режим сервера отчетов.

Товар Перенесено SharePoint Description
Passwords Нет Нет Пароли НЕ переносятся. После переноса элементов содержимого обновите учетные данные на целевом сервере. Например, источники данных с сохраненными учетными данными.
Мои отчеты Нет Нет Функция "Мои отчеты" в собственном режиме основана на отдельных входах пользователей, поэтому служба сценариев не имеет доступа к содержимому в папках "Мои отчеты" для пользователей, отличных от параметра -u , используемого для запуска скрипта RSS. Кроме того, "Мои отчеты" не является функцией режима SharePoint служб Reporting Services, а элементы в папках не могут быть скопированы в среду SharePoint. Таким образом, скрипт не копирует элементы отчета, которые находятся в папках "Мои отчеты" на сервере отчетов исходного собственного режима

Чтобы перенести содержимое папки "Мои отчеты" с помощью этого скрипта, выполните следующие действия.

1. Создайте новую папку (папки) на веб-портале. Также можно создать папки или вложенные папки для каждого пользователя.
2. Войдите в систему в качестве одного из пользователей, у которого есть папка "Мои отчеты".
3. На веб-портале выберите папку Мои отчеты.
4. Выберите представление Сведения для папки.
5. Выберите все отчеты, которые необходимо скопировать.
6. Выберите Переместить на панели инструментов веб-портала.
7. Выберите нужную папку назначения.
8. Повторите шаги 2–7 для каждого пользователя.
9. Выполните скрипт.
Журнал Нет Нет
Параметры журнала Да Да Параметры журнала переносятся, в то время как данные журнала НЕТ.
Расписания Да Да Чтобы перенести расписания, агент SQL Server должен работать на целевом сервере. Если агент SQL Server не запущены в целевом объекте, появится сообщение об ошибке, аналогичное этому:

Migrating schedules: 1 items found. Migrating schedule: theMondaySchedule ... FAILURE: The SQL Agent service isn't running. This operation requires the SQL Agent service. ---> Microsoft.ReportingServices.Diagnostics.Utilities.SchedulerNotResponding Exception: The SQL Agent service isn't running. This operation requires the SQL Agent service.
Роли и системные политики Да Да По умолчанию скрипт не копирует настраиваемую схему разрешений между серверами. По умолчанию элементы копируются на целевой сервер с флагом "наследовать родительские разрешения", равным TRUE. Если нужно, чтобы скрипт скопировал разрешения для отдельных элементов, воспользуйтесь переключателем SECURITY.

Если исходные и целевые серверы не совпадают с режимом сервера отчетов, например из собственного режима в режим SharePoint, и используется параметр SECURITY, скрипт пытается сопоставить роли и группы по умолчанию на основе сравнения ролей и задач в Службах Reporting Services с группами и разрешениями SharePoint. Пользовательские роли и группы не будут скопированы на целевой сервер.

При копировании скрипта между серверами , которые являются одинаковым режимом, и используется переключатель SECURITY, скрипт создает новые роли (собственный режим) или группы (режим SharePoint) на целевом сервере.

Если роль уже существует на целевом сервере, скрипт создает сообщение "Сбой", аналогичное приведенному ниже, и продолжите перенос других элементов. После завершения работы скрипта убедитесь, что роли на целевом сервере настроены в соответствии с потребностями. Роли миграции: обнаружены восемь элементов.

Migrating role: Browser ... FAILURE: The role 'Browser' already exists and cannot be created. ---> Microsoft.ReportingServices.Diagnostics.Utilities.RoleAlreadyExistsException: The role 'Browser' already exists and cannot be created.

Дополнительные сведения см. в статье Предоставление пользователю доступа к серверу отчетов

Примечание. Если пользователь, существующий на исходном сервере, не существует на целевом сервере, скрипт не может применять назначения ролей на целевом сервере, скрипт не может применять назначения ролей, даже если используется переключатель БЕЗОПАСНОСТИ.
Общий источник данных Да Да Скрипт не перезаписывает существующие элементы на целевом сервере. Если элемент на целевом сервере уже существует с тем же именем, появится сообщение об ошибке, аналогичное этому:

Migrating DataSource: /Data Sources/Aworks2012_oltp ... FAILURE:The item '/Data Sources/Aworks2012_oltp' already exists. ---> Microsoft.ReportingServices.Diagnostics.Utilities.ItemAlreadyExistsException: The item '/Data Source s/Aworks2012_oltp' already exists.

Учетные данные НЕ копируются как часть источника данных. После переноса элементов содержимого обновите учетные данные на целевом сервере.
Общий набор данных Да Да
Папка Да Да Скрипт не перезаписывает существующие элементы на целевом сервере. Если элемент на целевом сервере уже существует с тем же именем, появится сообщение об ошибке, аналогичное этому:

Migrating Folder: /Reports ... FAILURE: The item '/Reports' already exists. ---> Microsoft.ReportingServices.Diagnostics.Utilities.ItemAlreadyExistsException: The item '/Reports' already exists.
Отчет Да Да Скрипт не перезаписывает существующие элементы на целевом сервере. Если элемент на целевом сервере уже существует с тем же именем, появится сообщение об ошибке, аналогичное этому:

Migrating Report: /Reports/testThe item '/Reports/test' already exists. ---> Microsoft.ReportingServices.Diagnostics.Utilities.ItemAlreadyExistsException: The item '/Reports/test' already exists.
Отчеты Power BI No No Доступно только с помощью Сервер отчетов Power BI

Команды PowerShell в службах Reporting Services, например Out-RsRestFolderContent и Write-RsRestFolderContent, могут использоваться в качестве альтернативы.
Параметры Да Да
Подписки Да Да
Параметры журнала Да Да Параметры журнала переносятся, в то время как данные журнала НЕТ.
Параметры обработки Да Да
Параметры обновления кэша Да Да Зависимые параметры переносятся в составе элемента каталога. Ниже приведен пример из скрипта при переносе отчета (RDL) и связанных параметров, таких как параметры обновления кэша:

– Параметры миграции отчета TitleOnly.rdl: найдено 0 элементов.
— Перенос подписок для отчета TitleOnly.rdl: 1 элемент найден.
– Миграция подписки Cохранить в \\server\public\savedreports как TitleOnly ... УСПЕШНО
– Миграция параметров журнала отчета TitleOnly.rdl… УСПЕШНО
– Миграция параметров обработки отчета TitleOnly.rdl… Найдено 0 элементов.
– Миграция параметров обновления кэша отчета TitleOnly.rdl… УСПЕШНО
— Перенос планов обновления кэша для отчета TitleOnly.rdl: 1 элемент найден.
– Миграция плана обновления кэша titleonly_refresh735amM2F… УСПЕШНО
Планы обновления кэша Да Да
Изображения Да Да
Элементы отчета Да Да
Ключевые показатели эффективности No No Команды PowerShell для служб Reporting Services, такие как Out-RsRestFolderContent и Write-RsRestFolderContent, могут использоваться в качестве альтернативы.
Мобильные отчеты No No Команды PowerShell для служб Reporting Services, такие как Out-RsRestFolderContent и Write-RsRestFolderContent, могут использоваться в качестве альтернативы.
Книги Excel No No Доступно только с помощью Сервер отчетов Power BI

Используйте команды PowerShell для служб Reporting Services, например Out-RsRestFolderContent и Write-RsRestFolderContent, можно использовать в качестве альтернативы.

Примечание.

Части отчетов устарели для всех выпусков служб SQL Server Reporting Services, начиная с SQL Server Reporting Services 2019 и всех выпусков Сервер отчетов Power BI начиная с Сервер отчетов Power BI сентября 2022 года.

Примечание.

Издатель мобильных отчетов для SQL Server не рекомендуется использовать во всех выпусках SQL Server Reporting Services после SQL Server Reporting Services 2019. Она прекращена с SQL Server Reporting Services 2022 и Сервер отчетов Power BI.

Необходимые разрешения

Разрешения, необходимые для чтения и записи элементов и ресурсов, различные для разных методов, используемых в скрипте. В следующей таблице перечислены методы, используемые для каждого элемента или ресурса, и ссылки на соответствующее содержимое. Ознакомьтесь с отдельными статьям, в которых описаны необходимые разрешения. Например, в статье метода ListChildren указаны необходимые разрешения:

  • Обязательные разрешения для собственного режима: свойства ReadProperties для элемента

  • Обязательные разрешения в режиме SharePoint: ViewListItems

Элемент или ресурс Оригинал Target
Элементы каталога ListChildren

GetProperties

GetItemDataSources

GetItemReferences

GetDataSourceContents

GetItemLink
CreateCatalogItem

SetItemDataSources

GetItemReferences

CreateDataSource

CreateLinkedItem

CreateFolder
Роль ListRoles

GetRoleProperties
CreateRole
Системная политика GetSystemPolicies SetSystemPolicies
Расписание ListSchedules CreateSchedule
Отток подписок ListSubscriptions

GetSubscriptionProperties

GetDataDrivenSubscriptionProperties
CreateSubscription

CreateDataDrivenSubscription
План обновления кэша ListCacheRefreshPlans

GetCacheRefreshPlanProperties
CreateCacheRefreshPlan
Параметры GetItemParameters SetItemParameters
Параметры выполнения GetExecutionOptions SetExecutionOptions
Параметры кэша GetCacheOptions SetCacheOptions
Параметры журнала GetItemHistoryOptions SetItemHistoryOptions
Политика элемента GetPolicies SetPolicies

Дополнительные сведения см. в статье "Сравнение ролей и задач в службах Reporting Services" с группами и разрешениями SharePoint.

Использование скрипта

  1. Загрузите файл скрипта в локальную папку, например c:\rss\ssrs_migration.rss.

  2. Откройте командную строку с правами администратора.

  3. Перейдите к папке, содержащей файл ssrs_migration.rss.

  4. Выполните команду с параметрами, соответствующими сценарию.

Простой пример, из сервера отчетов в собственном режиме на сервер отчетов в собственном режиме.

В следующем примере выполняется миграция содержимого с Sourceserver в собственном режиме на Targetserverв собственном режиме.

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/ReportServer -u Domain\User -p password -v ts="https://TargetServer/reportserver" -v tu="Domain\Userser" -v tp="password"

Заметки по использованию.

  • Скрипт выполняется в два шага.

    Первым шагом является аудит, чтобы вернуть список элементов, перенесенных, а второй этап — процесс миграции.

    Скрипт можно отменить после шага 1, если вы хотите просмотреть только возможный список миграции или изменить параметры. Зависимые параметры не перечислены на шаге 1. Например, не перечисляются параметры кэша отчета, а только сам отчет.

    Совет

    Если нужно просто провести аудит на одном сервере, используйте его в качестве исходного и целевого сервера и отмените все шаги, кроме первого.

    Хорошее применение данных аудита, получаемых после выполнения первого шага, — просмотреть существующие роли как на исходном, так и на целевом серверах, работающих в собственном режиме. В следующем примере показан список аудита шага 1. Обратите внимание, что список содержит "роли" раздела, так как был использован параметр -v security="True".

    • Retrieve and report the list of items that will be migrated. You can cancel the script after step 1 if you do not want to start the actual migration.

      Retrieving roles:

      Role: Browser

      Role: Content Manager

      Role: Model Item Browser

      Retrieve and report the list of items that will be migrated. You can cancel the script after step 1 if you do not want to start the actual migration.

      Retrieving roles:

      Role: Browser

      Role: Content Manager

      Role: CustomRole

      Role: Model Item Browser

      Role: My Reports

      Role: Publisher

      Role: Report Builder

      Role: System Administrator

      Role: System User

      Retrieving system policies:

      Retrieving system policies:

      System policy: BUILTIN\Administrators

      System policy: domain\user1

      System policy: domain\ueser2

      Retrieving schedules:

      Schedule: theMondaySchedule

      Retrieving catalog items. This may take a while.

      Folder: /Data Sources

      DataSource: /Data Sources/Aworks2012_oltp

      Folder: /images

      Resource: /images/Boba Fett.png

      Resource: /images/R2-D2.png

      Folder: /Reports

      Report: /Reports/products

      Report: /Reports/test

      Report: /Reports/TitleOnly

  • SOURCE_URL и TARGET_URL должны быть действительными URL-адресами сервера отчетов, которые указывают на исходный и целевой сервер отчетов служб Reporting Services. В собственном режиме URL-адрес сервера отчетов выглядит следующим образом:

    • https://servername/reportserver

    В режиме SharePoint URL-адрес выглядит следующим образом:

    • https://servername/_vti_bin/reportserver
  • Виртуальная структура папок, представленная пользователю в режиме интеграции с SharePoint, может отличаться от базовой. Откройте https://servername/_vti_bin/reportserver или https://servername/sites/site_name/_vti_bin/reportserver в браузере, чтобы увидеть структуру невиртуальных папок. Эта структура полезна для задания исходной папки и целевой папки другим, кроме /сервера в режиме SharePoint.

  • Пароли не переносятся и должны быть введены повторно, например источники данных с сохраненными учетными данными.

Описание параметра

Параметр Описание: Обязательное поле
-s Source_URL URL-адрес исходного сервера отчетов Да
-u Domain\password -p password Учетные данные для исходного сервера. OPTIONAL, если не указаны учетные данные, используются учетные данные по умолчанию.
-v st="SITE" OPTIONAL. Этот параметр используется только для серверов отчетов в режиме интеграции с SharePoint.
- v f="SOURCEFOLDER" Задайте «/», чтобы перенести все, либо «/folder/subfolder» для частичного переноса. Все, что находится в этой папке, копируется Необязательный, значение по умолчанию /— .
-v ts="TARGET_URL" URL-адрес целевого сервера отчетов
-v tu="domain\username" -v tp="password" Учетные данные для целевого сервера. OPTIONAL, если не указаны учетные данные, используются учетные данные по умолчанию. Примечание. Пользователь указан как создатель общих расписаний и учетная запись изменена для элементов отчета на целевом сервере.
-v tst="SITE" OPTIONAL. Этот параметр используется только для серверов отчетов в режиме интеграции с SharePoint.
-v tf ="TARGETFOLDER" Установите значение / для миграции на корневой уровень. Задайте "/folder/subfolder" для копирования в уже существующую папку. Все, что находится в элементе SOURCEFOLDER, копируется в targetFOLDER. Необязательный, значение по умолчанию /— .
-v security= "True/False" Если задано значение False, элементы целевого каталога наследуют параметр безопасности в соответствии с параметрами целевой системы. Этот параметр рекомендуется использовать для миграций между серверами отчетов разных типов, например из собственного режима в режим интеграции с SharePoint. Если задано значение True, скрипт пытается перенести параметры безопасности. Необязательный, значение по умолчанию False— .

Дополнительные примеры

Сервер отчетов в собственном режиме для сервера отчетов в собственном режиме

В следующем примере выполняется миграция содержимого с Sourceserver в собственном режиме на Targetserverв собственном режиме.

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/ReportServer -u Domain\User -p password -v ts="https://TargetServer/reportserver" -v tu="Domain\Userser" -v tp="password"  

В следующем примере добавляется параметр безопасности:

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/ReportServer -u Domain\User -p password -v ts="https://TargetServer/reportserver" -v tu="Domain\Userser" -v tp="password" -v security="True"  

Собственный режим в режиме SharePoint — корневой сайт

В следующем примере выполняется миграция содержимого с SourceServer в собственном режиме на "корневой сайт" на сервере TargetServer в режиме интеграции с SharePoint. Папки "Отчеты" и "Источники данных" на сервере в собственном режиме переносятся в развертывание SharePoint как библиотеки.

Экранный перехват, показывающий выделенные параметры меню

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/ReportServer -u Domain\User -p Password -v ts="https://TargetServer/_vti_bin/ReportServer" -v tu="Domain\User" -v tp="Password"  

Собственный режим в режиме SharePoint -'bi' семейства веб-сайтов

В следующем примере выполняется миграция содержимого с сервера в собственном режиме на сервер в режиме интеграции с SharePoint, который содержит семейство веб-сайтов, сайтов бизнес-аналитики и библиотеку общих документов. Скрипт создает папки в целевой библиотеке документов. Например, скрипт создает папку "Отчеты" и папку "Источники данных" в целевой библиотеке документов.

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/ReportServer -u Domain\User -p Password -v ts="https://TargetServer/sites/bi/_vti_bin/reportserver" -v tst="sites/bi" -v tf="Shared Documents" -v tu="Domain\User" -v tp="Password"  

Режим SharePoint в режиме SharePoint -'bi' семейства веб-сайтов

В следующем примере выполняется миграция содержимого:

  • С сервера SourceServer в режиме интеграции с SharePoint, содержащего семейство веб-сайтов бизнес-аналитики и общую библиотеку документов.

  • На TargetServer в режиме интеграции с SharePoint, который содержит семейство веб-сайтов бизнес-аналитики и общую библиотеку документов.

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/_vti_bin/reportserver -v st="sites/bi" -v f="Shared Documents" -u Domain\User1 -p Password -v ts="https://TargetServer/sites/bi/_vti_bin/reportserver" -v tst="sites/bi" -v tf="Shared Documents" -v tu="Domain\User" -v tp="Password"  

Собственный режим в собственном режиме — виртуальная машина Azure

Следующий пример переносит содержимое из сервера отчетов в собственном режиме SourceServer на сервер отчетов TargetServer Native mode, работающий на виртуальной машине Azure. Сервер TargetServer не входит в домен SourceServer, при этом User2 является администратором на виртуальной машине Azure, где работает TargetServer.

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/ReportServer -u Domain\user1 -p Password -v ts="https://ssrsnativeazure.cloudapp.net/ReportServer" -v tu="user2" -v tp="Password2"  

Совет

Сведения об использовании Windows PowerShell для создания серверов отчетов Служб Reporting Services на виртуальных машинах Azure см. в статье "Использование PowerShell для создания виртуальной машины Azure с собственным режимом сервера отчетов".

Семейство веб-сайтов SharePoint —'bi' на сервере собственного режима на виртуальной машине Azure.

В следующем примере содержимое переносится с сервера отчетов в режиме SharePoint SourceServer , содержащего семейство веб-сайтов "sites/bi" и общую библиотеку документов, на сервер отчетов TargetServer Native mode, работающий на виртуальной машине Azure. Сервер TargetServer не входит в домен SourceServer, при этом User2 является администратором на виртуальной машине Azure, где работает TargetServer.

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://uetesta02/_vti_bin/reportserver -u user1 -p Password -v ts="https://ssrsnativeazure.cloudapp.net/ReportServer" -v tu="user2" -v tp="Passowrd2"  

Проверка

Раздел содержит описание некоторых шагов, которые необходимо выполнить на целевом сервере, чтобы убедиться, что содержимое и политики были успешно перенесены.

Расписания

Проверка расписаний на целевом сервере.

Native Mode

  1. Откройте веб-портал на целевом сервере.

  2. В верхнем меню выберите Параметры сайта.

  3. На левой панели выберите Расписания.

Режим интеграции с SharePoint:

  1. Перейдите к Параметры сайта.

  2. В группе служб Reporting Services выберите "Управление общими расписаниями".

Роли и группы

Native Mode

  1. Откройте SQL Server Management Studio и подключитесь к серверу отчетов в режиме работы в собственной системе команд.

  2. В обозреватель объектов выберите "Безопасность".

  3. Выберите Роли.

Устранение неполадок

Используйте флаг трассировки -t для получения дополнительных сведений. Например, если при выполнении скрипта появляется сообщение следующего вида:

  • Не удалось подключиться к серверу: https://\<servername>/ReportServer/ReportService2010.asmx

Запустите скрипт еще раз с флагом -t, чтобы получить сообщение следующего вида:

  • System.Exception: Couldn't connect to server: https://\<servername>/ReportServer/ReportService2010.asmx ---> System.Net.WebException: **The request failed with HTTP status 401: Unauthorized**. at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at Microsoft.SqlServer.ReportingServices2010.ReportingService2010.IsSSLRequired() at Microsoft.ReportingServices.ScriptHost.Management2010Endpoint.PingService(String url, String userName, String password, String domain, Int32 timeout) at Microsoft.ReportingServices.ScriptHost.ScriptHost.DetermineServerUrlSecurity() --- End of inner exception stack trace ---

служебная программа RS.exe (SSRS)
Сравнение ролей и задач в Службах Reporting Services с группами и разрешениями SharePoint