Пример скрипта служб 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).
Элементы и ресурсы, которые переносит скрипт
Скрипт не записывает существующие элементы содержимого с одинаковым именем. Если скрипт обнаруживает элементы с тем же именем на целевом сервере, который находятся на исходном сервере, отдельные элементы приводят к сбою сообщения и скрипт продолжается. В следующей таблице перечислены типы содержимого и ресурсов, которые скрипт может перенести в целевой режим сервера отчетов.
Товар | Migrated | SharePoint | Description |
---|---|---|---|
Пароли | Нет | Нет | Пароли НЕ переносятся. После переноса элементов содержимого обновите учетные данные на целевом сервере. Например, источники данных с сохраненными учетными данными. |
Мои отчеты | Нет | Нет | Функция "Мои отчеты" в собственном режиме основана на отдельных входах пользователей, поэтому служба сценариев не имеет доступа к содержимому в папках "Мои отчеты" для пользователей, отличных от параметра -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.
Использование скрипта
Загрузите файл скрипта в локальную папку, например c:\rss\ssrs_migration.rss.
Откройте командную строку с правами администратора.
Перейдите к папке, содержащей файл ssrs_migration.rss.
Выполните команду с параметрами, соответствующими сценарию.
Простой пример, из сервера отчетов в собственном режиме на сервер отчетов в собственном режиме.
В следующем примере выполняется миграция содержимого с 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
Откройте веб-портал на целевом сервере.
В верхнем меню выберите Параметры сайта.
На левой панели выберите Расписания.
Режим интеграции с SharePoint:
Перейдите к Параметры сайта.
В группе служб Reporting Services выберите "Управление общими расписаниями".
Роли и группы
Native Mode
Откройте SQL Server Management Studio и подключитесь к серверу отчетов в режиме работы в собственной системе команд.
В обозреватель объектов выберите "Безопасность".
Выберите Роли.
Устранение неполадок
Используйте флаг трассировки -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