Образец скрипта программы rs.exe служб Reporting Services для переноса содержимого между серверами отчетов
В этом разделе содержится и описывается пример скрипта RSS Reporting Services, который копирует элементы содержимого и параметры с одного сервера отчетов SQL Server Reporting Services на другой с помощью программыRS.exe. RS.exe устанавливается вместе со службами Reporting Services как в режиме работы в собственной системе команд, так и в режиме SharePoint. Скрипт копирует с одного сервера на другой элементы служб Reporting Services, например отчеты и подписки. Скрипт поддерживает как режим интеграции с SharePoint, так и собственный режим сервера отчетов.
Применимо к: Службы Reporting Services в режиме интеграции с SharePoint | Службы Reporting Services в собственном режиме |
В этом разделе.
-
Сервер отчетов в собственном режиме на сервер отчетов в собственном режиме
В собственном режиме в режиме SharePoint — семейство веб-сайтов bi
Режим интеграции с SharePoint в режиме интеграции с SharePoint — семейство веб-сайтов bi
В собственном режиме — в собственном режиме — виртуальная машина Azure
Загрузка скрипта ssrs_migration.rss
Скачайте скрипт с сайта CodePlex Скрипт программы RS.exe служб Reporting Services переносит содержимое в локальную папку. Дополнительную информацию смотрите в разделе Использование скрипта данной темы.
Поддерживаемые сценарии
Скрипт поддерживает как режим интеграции с SharePoint, так и собственный режим сервера отчетов. Скрипт поддерживает следующие версии сервера отчетов.
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
Скрипт может копировать содержимое между серверами отчетов, работающих в одном или разных режимах. Например, можно запустить скрипт для копирования содержимого с сервера отчетов SQL Server 2008 R2 в собственном режиме на сервер отчетов SQL Server 2012 с пакетом обновления 1 (SP1) в режиме sharePoint. Можно запустить скрипт с любого сервера, на котором установлена программа RS.exe. Например, в таком развертывании можно сделать следующее.
Запустите RS.exe и скрипт НА сервере A.
Скопировать содержимое С сервера В.
НА сервер С
Имя сервера | Режим сервера отчетов |
---|---|
Сервер А | Собственный |
сервера В. | SharePoint |
сервер С | SharePoint |
Дополнительные сведения об утилите RS.exe см. в разделе Служебная программа RS.exe (SSRS).
Элементы и ресурсы, которые переносит скрипт
Скрипт не перезаписывает существующие элементы содержимого с такими же именами. Если скрипт выявит на целевом сервере элементы с такими же именами, что и на исходном сервере, появятся сообщения об ошибке для отдельных элементов, при этом скрипт продолжит работу. В следующей таблице перечислены типы содержимого и ресурсов, которые скрипт может перенести в целевой режим сервера отчетов.
Item | Перенесено | SharePoint | Описание |
---|---|---|---|
паролей | Нет | Нет | Пароли НЕ переносятся. После переноса элементов содержимого обновите учетные данные на целевом сервере. Например, источники данных с сохраненными учетными данными. |
Мои отчеты | Нет | Нет | Работа функции "Мои отчеты" в собственном режиме основана на именах входа конкретных пользователей, поэтому служба скриптов не имеет доступа к содержимому папки "Мои отчеты" для пользователей, не указанных параметром -u, который используется для запуска скрипта RSS. Кроме того, "Мои отчеты" не является функцией Reporting Services режиме SharePoint, и элементы в папках не могут быть скопированы в среду 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 is not running. This operation requires the SQL Agent service. ---> Microsoft.ReportingServices.Diagnostics.Utilities.SchedulerNotResponding Exception: The SQL Agent service is not running. This operation requires the SQL Agent service. |
Роли и системные политики | Да | Да | По умолчанию скрипт не копирует пользовательскую схему разрешений с одного сервера на другой. По умолчанию элементы будут передаваться на целевой сервер с флагом "наследовать родительские разрешения" со значением TRUE. Если нужно, чтобы скрипт скопировал разрешения для отдельных элементов, воспользуйтесь переключателем SECURITY. Если исходный и целевой серверы работают в разных режимах сервера отчетов, например выполняется перенос из собственного режима в режим интеграции с SharePoint, и используется выключатель SECURITY, скрипт попытается сопоставить роли и группы по умолчанию на основе сравнения, приведенного в следующем разделе Сравнение ролей и задач служб Reporting Services с группами и разрешениями SharePoint. Пользовательские роли и группы не будут скопированы на целевой сервер. Если скрипт копирует между серверами, которые работают в одном режиме, и используется переключатель SECURITY, скрипт создает на целевом сервере новые роли (собственный режим) или группы (режим интеграции с SharePoint). Если роль уже существует на целевом сервере, скрипт создаст сообщение об ошибке (см. пример ниже) и продолжит перенос других элементов. После завершения работы скрипта убедитесь, что роли на целевом сервере настроены в соответствии с потребностями. Роли миграции: Найдено 8 элементов. 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. Дополнительные сведения см. в статье Предоставление пользователю доступа к серверу отчетов (диспетчер отчетов) Примечание. Если пользователь существует на исходном сервере и отсутствует на целевом сервере, скрипт не сможет применить назначение ролей на целевом сервере (даже при использовании параметра SECURITY). |
Общий источник данных | Да | Да | Скрипт не перезаписывает существующие элементы на целевом сервере. Если элемент с таким же именем уже существует на целевом сервере, появится сообщение об ошибке следующего вида: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. |
Report | Да | Да | Скрипт не перезаписывает существующие элементы на целевом сервере. Если элемент с таким же именем уже существует на целевом сервере, появится сообщение об ошибке следующего вида:Migrating Report: /Reports/testThe item '/Reports/test' already exists. ---> Microsoft.ReportingServices.Diagnostics.Utilities.ItemAlreadyExistsException: The item '/Reports/test' already exists. |
Параметры | Да | Да | |
Подписки | Да | Да | |
Параметры журнала | Да | Да | Параметры журнала переносятся, в то время как данные журнала НЕТ. |
параметры обработки | Да | Да | |
параметры обновления кэша | Да | Да | Зависимые параметры переносятся в составе элемента каталога. Далее приводится пример скрипта, который переносит отчет (RDL-файл), и связанные параметры, например параметры обновления кэша. Параметры миграции для отчета TitleOnly.rdl: найдено 0 элементов. Миграция подписок для отчета TitleOnly.rdl: найден 1 элемент. Перенос подписки. Сохранение в \\server\public\savedreports как TitleOnly ... УСПЕХ Миграция параметров журнала для отчета TitleOnly.rdl… УСПЕШНОЕ ЗАВЕРШЕНИЕ Миграция параметров обработки для отчета TitleOnly.rdl… Найдено 0 элементов. Миграция параметров обновления кэша для отчета TitleOnly.rdl… УСПЕШНОЕ ЗАВЕРШЕНИЕ Миграция планов обновления кэша для отчета TitleOnly.rdl: найден 1 элемент. Миграция плана обновления кэша titleonly_refresh735amM2F… УСПЕШНОЕ ЗАВЕРШЕНИЕ |
Планы обновления кэша | Да | Да | |
Изображения | Да | Да | |
Элементы отчета | Да | Да |
Необходимые разрешения
Разрешения, необходимые для чтения и записи элементов и ресурсов, разные для разных методов, используемых в скрипте. В следующей таблице перечислены методы, используемые для каждого элемента или ресурса, и ссылки на соответствующее содержимое. Переходите к отдельным разделам, в которых приведены необходимые разрешения. Например, обязательные требования для метода ListChildren следующие:
Обязательные разрешения для собственного режима: ReadProperties для элемента
Требуемые разрешения в режиме интеграции с SharePoint: ViewListItems
Элемент или ресурс | Источник | Назначение |
---|---|---|
Элементы каталога | 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 http://SourceServer/ReportServer -u Domain\User -p password -v ts="http://TargetServer/reportserver" -v tu="Domain\Userser" -v tp="password"
Заметки по использованию.
Скрипт выполняется в два шага.
Первый шаг — это аудит, чтобы получить список элементов для переноса, и второй шаг — сам перенос.
Вы можете отменить сценарий после шага один, если вы хотите увидеть возможный перенос списка или если вы хотите изменить параметры. Зависимые параметры не указываются на первом шаге. Например, не перечисляются параметры кэша отчета, а только сам отчет.
Совет
Если нужно просто провести аудит на одном сервере, используйте один сервер в качестве источника и целевого сервера и отмените все шаги после первого
Хорошее применение данных аудита, получаемых после выполнения первого шага, — просмотреть существующие роли как на исходном, так и на целевом серверах, работающих в собственном режиме. Ниже приводится пример списка аудита, полученного после первого шага. Обратите внимание, что список содержит "роли" раздела, так как был использован параметр -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» для частичного переноса. Будет скопировано все из этой папки. | OPTIONAL, «/» по умолчанию. |
-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. | OPTIONAL, «/» по умолчанию. |
-v security= "True/False" | Если значение равно FALSE, элементы целевого каталога унаследуют параметры безопасности в соответствии с параметрами целевой системы. Этот параметр рекомендуется использовать для миграций между серверами отчетов разных типов, например из собственного режима в режим интеграции с SharePoint. Если значение равно TRUE, скрипт попытается перенести параметры безопасности. | OPTIONAL, значение по умолчанию FALSE. |
Другие примеры
С сервера отчетов в собственном режиме на сервер отчетов в собственном режиме
В следующем примере выполняется миграция содержимого с Sourceserver в собственном режиме на Targetserverв собственном режиме.
rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://SourceServer/ReportServer -u Domain\User -p password -v ts="http://TargetServer/reportserver" -v tu="Domain\Userser" -v tp="password"
В следующем примере добавляется параметр безопасности:
rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://SourceServer/ReportServer -u Domain\User -p password -v ts="http://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 http://SourceServer/ReportServer -u Domain\User -p Password -v ts="http://TargetServer/_vti_bin/ReportServer" -v tu="Domain\User" -v tp="Password"
В собственном режиме в режиме SharePoint — семейство веб-сайтов bi
В следующем примере выполняется миграция содержимого с сервера в собственном режиме на сервер в режиме интеграции с SharePoint, который содержит семейство веб-сайтов, сайтов бизнес-аналитики и библиотеку общих документов. Скрипт создает папки в целевой библиотеке документов. Например, скрипт создает папки "Отчеты" и "Источники данных" в целевой библиотеке документов.
rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://SourceServer/ReportServer -u Domain\User -p Password -v ts="http://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 http://SourceServer/_vti_bin/reportserver -v st="sites/bi" -v f="Shared Documents" -u Domain\User1 -p Password -v ts="http://TargetServer/sites/bi/_vti_bin/reportserver" -v tst="sites/bi" -v tf="Shared Documents" -v tu="Domain\User" -v tp="Password"
В собственном режиме — в собственном режиме — виртуальная машина Azure
В следующем примере выполняется миграция содержимого:
С сервера отчетов SourceServerв собственном режиме.
На сервер отчетов TargetServer в собственном режиме, работающий под управлением виртуальной машины Azure. TargetServer не присоединен к домену SourceServer, а пользователь User2 является администратором на виртуальной машине Azure TargetServer.
rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://SourceServer/ReportServer -u Domain\user1 -p Password -v ts="http://ssrsnativeazure.cloudapp.net/ReportServer" -v tu="user2" -v tp="Password2"
Совет
Сведения по использованию Windows PowerShell для создания серверов отчетов Reporting Services на виртуальных машинах Azure см. в разделе Использование PowerShell для создания сервера отчетов на виртуальных машинах Azure в режиме работы в собственной системе команд.
Режим SharePoint — семейство веб-сайтов bi на сервере в собственном режиме на виртуальной машине Azure
В следующем примере выполняется миграция содержимого:
С сервера отчетов SourceServer в режиме интеграции с SharePoint, который содержит семейство веб-сайтов бизнес-аналитики и общую библиотеку документов.
На сервер отчетов TargetServer в собственном режиме, работающий под управлением виртуальной машины Azure. TargetServer не присоединен к домену SourceServer, а пользователь User2 является администратором на виртуальной машине Azure TargetServer.
rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://uetesta02/_vti_bin/reportserver -u user1 -p Password -v ts="http://ssrsnativeazure.cloudapp.net/ReportServer" -v tu="user2" -v tp="Passowrd2"
Проверка
Раздел содержит описание некоторых шагов, которые необходимо выполнить на целевом сервере, чтобы убедиться, что содержимое и политики были успешно перенесены.
Расписания
Проверка расписаний на целевом сервере.
Native Mode
Перейдите в диспетчер отчетов на целевом сервере.
В верхнем меню щелкните Параметры сайтов .
На левой панели щелкните Расписания .
Режим SharePoint:
Перейдите к Параметры сайта.
В группе Службы Reporting Services щелкните Управление общими расписаниями.
Роли и группы
Native Mode
Откройте SQL Server Management Studio и подключитесь к серверу отчетов в режиме работы в собственной системе команд.
В обозревателе объектов щелкните Безопасность.
Выберите Роли.
Устранение неполадок
Используйте флаг трассировки -t для получения дополнительных сведений. Например, если при выполнении скрипта появляется сообщение следующего вида:
- Не удалось подключиться к серверу: http://< имя>_сервера/ReportServer/ReportService2010.asmx
Запустите скрипт еще раз с флагом -t , чтобы увидеть следующее сообщение:
- System.Exception: Не удалось подключиться к серверу: http:// имя>_сервера/ReportServer/ReportService2010.asmx ---> System.Net.WebException: запрос завершился ошибкой с состоянием HTTP 401: Не авторизовано.< в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(сообщение SoapClientMessage, ответ WebResponse, responseStream потока, логическое asyncCall) на System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (строка имя_метода Object [] параметры) в Microsoft.SqlServer.ReportingServices2010.ReportingService2010.IsSSLRequired() на Microsoft.ReportingServices.ScriptHost.Management2010Endpoint.PingService (URL-адрес строки, строка userName, строковый пароль строка домена, время ожидания Int32) в Microsoft.ReportingServices.ScriptHost.ScriptHost.DetermineServerUrlSecurity()---конец трассировки стека внутреннего исключения---
См. также:
Служебная программа RS.exe (SSRS)
Сравнение ролей и задач служб Reporting Services с группами и разрешениями SharePoint