Как копировать отчеты SSRS на новый сервер, если я не являюсь владельцем отчетов
Мне нужно скопировать все отчеты с одного сервера SSRS на другой. Я планирую сделать это, просмотрев каждый отчет и загрузив файл определения отчета, а затем загрузив файл на новый сервер.
Мне предоставили роли System Administrator и System User широкие роли, и у меня есть роли Browser, Content Manager, My Reports, Publisher и Report Builder для папки Home, но я до сих пор не вижу кнопки Edit, которая позволит мне сохраните файл определения отчета. Причина в том, что отчеты принадлежат другим пользователям. Я не могу попросить всех пользователей дать мне разрешения на редактирование своих отчетов, потому что слишком много пользователей, и я думаю, что многие из них никогда не смогут обойти это.
Что я могу сделать, чтобы скопировать все отчеты на новый сервер, если я не являюсь владельцем большинства из них?
Ответы
Ответ 1
В результате я запустил Internet Explorer в качестве пользователя администратора сервера. Вы делаете это, удерживая shift и щелкнув правой кнопкой мыши значок Internet Explorer в меню "Пуск", а затем выбрав "Run as different user". Затем вы вводите данные для входа в учетную запись администратора домена и вводите адрес сервера отчетов. Являясь пользователем администратора сервера для домена, я разрешил мне быть пользователем Content Manager для всех отчетов.
Ответ 2
Попробуйте этот инструмент:
http://code.google.com/p/reportsync/
Он может синхронизировать все отчеты (или выбранные папки) с одного сервера на другой.
Кроме того, вы также можете загружать и загружать из локальных папок.
Источники данных с тем же именем будут автоматически присоединены.
Экономит много времени, так как вам не нужно повторно подключать источники данных после загрузки.
Примечание. Я сам написал этот инструмент в соответствии с моими потребностями, но его свободный и открытый исходный код.
Ответ 3
Используйте this
Просто укажите его на свой сервер RS и дайте ему запустить. У этого есть много вариантов относительно того, что есть и не написано сценарием. Один из них загружает существующий файл RDL.
По завершении
просто инструмент поиска и замены, чтобы изменить имя сервера (внутри сгенерированных скриптов) и любую другую информацию о пароле/местоположении и позволить ей работать. По сути, он использует RS.exe под капотом.
Я, кажется, помню, что вам нужно запускать его локально в окне SSRS при развертывании.
Ответ 4
Для служб отчетов SQL Server 2008 R2 или более поздних версий Microsoft имеет средство миграции:
http://www.microsoft.com/en-us/download/details.aspx?id=29560
Инструмент миграции служб Reporting Services
Инструмент, который переносит отчеты и другие артефакты из одного отчета сервер на другой сервер отчетов. Он также может использоваться как резервная копия и восстановления для служб Reporting Services.
Я не использовал это лично, и, честно говоря, в описании перечислены некоторые недостатки, которые разработчики "работают над решением", но это может помочь кому-то.
Ответ 5
Если вы можете рассмотреть возможность замены всех отчетов на новом сервере, вы должны посмотреть на перемещение базы данных ReportServer. Это также приведет к перемещению подписки и кэшированных данных:
http://technet.microsoft.com/en-us/library/ms156421.aspx
Какую версию SSRS вы используете? Кнопка редактирования была в SSRS 2005, но больше не в 2008 или 2008 R2: она заменена кнопкой "Загрузить". Это может быть проблема?
В качестве Менеджера контента вы сможете редактировать определения любого отчета.
Дайте мне знать, на какую версию вы смотрите.
Jamie F
Ответ 6
Сначала: создайте резервную копию своей новой базы данных отчетов, прежде чем делать это.
Скопируйте таблицы follwing из исходной базы данных отчетов в новую базу данных отчетов:
- Каталог
- ChunkData
- Источник данных
- Политика
- PolicyuserRole
- SecData
- Пользователи
Убедитесь, что вы не скопировали таблицу клавиш.
Одна из проблем заключается в том, что вам нужно будет воссоздать все ваши общие источники данных и повторно назначить их каждому отчету. Но это скопирует все ваши папки, отчеты и роли пользователей.
Ответ 7
SSRS использует SQL Server для хранения своих данных в качестве бэкэнд, а таблица каталога используется для хранения файла отчета в двоичной форме. Ниже script просто извлекает определение отчета из таблицы каталога и использует служебную программу BCP для экспорта на заранее заданном пути в виде файла .rdl.
Чтобы использовать утилиту BCP из TSQL, нам нужно выполнить команду "xp_cmdshell"; он по умолчанию отключен. Итак, сначала вам нужно выполнить ниже script, чтобы включить его -
- Разрешить изменение дополнительных параметров. EXEC sp_configure 'показать дополнительные параметры', 1 GO
- Обновить текущее настроенное значение для расширенных параметров. РЕКОНФИКАЦИЯ GO
- Включить xp_cmdshell EXEC sp_configure 'xp_cmdshell', 1 GO
- Обновить текущее настроенное значение для xp_cmdshell RECONFIGURE GO
- Запретить дальнейшие расширенные параметры, которые необходимо изменить. EXEC sp_configure 'показать дополнительные параметры', 0 GO
- Обновить текущее настроенное значение для расширенных параметров. RECONFIGURE GO
После успешного выполнения для загрузки файлов можно выполнить script с требуемыми изменениями -
DECLARE @FilterReportPath AS VARCHAR (500) = NULL DECLARE @FilterReportName AS VARCHAR (500) = NULL
DECLARE @OutputPath AS VARCHAR (500) = 'D:\Reports\Download \'
DECLARE @TSQL AS NVARCHAR (MAX) SET @OutputPath = REPLACE (@OutputPath, '\', '/')
IF LTRIM (RTRIM (ISNULL (@OutputPath, ''))) = '' BEGIN SELECT 'Неверно Выходной путь 'END ELSE BEGIN SET @TSQL = STUFF ((SELECT'; EXEC master..xp_cmdshell '' bcp "'+' SELECT '+' CONVERT (VARCHAR (MAX), ' + 'CASE' + 'КОГДА LEFT (C.Content, 3) = 0xEFBBBF THEN STUFF (C.Content, 1,3,' '' '' '' ')' + 'ELSE C.Content' + '
END) '+' FROM '+' [ReportServer]. [Dbo]. [Каталог] CL '+' CROSS APPLY (SELECT CONVERT (VARBINARY (MAX), CL.Content) Содержание) C '+' WHERE '+' CL.ItemID = '' '' '+ CONVERT (VARCHAR (MAX), CL.ItemID) + '' '' '" queryout "' + @OutputPath + '' + CL.Name + '.rdl" ' + '-T -c -x '' 'FROM [ReportServer]. [dbo]. [Каталог] CL WHERE CL. [Type] = 2 --Report AND'/'+ CL. [Path] +'/'LIKE COALESCE ('%/% '+ @FilterReportPath +'%/% ','/'+ CL. [Path] +'/') И CL.Name LIKE COALESCE ('%' + @FilterReportName + '%', CL.Name) FOR XML PATH ('')), 1,1 '')
EXEC SP_EXECUTESQL @TSQL END