Службы SSRS Microsoft Reporting services-возможные проблемы при создании отчета из-за разрешений пользователя?



Я бьюсь головой о странную проблему, которая у меня возникает при создании отчетов, это сценарий:



Создал отчет с двумя изображениями внутри, и оба являются" внешними " ссылками с двумя различными параметрами (img01 и img02 оба текста), которые указывают на расположение изображения в базе данных SSRS следующим образом:



Img01 - / images / img01.формат jpg


img02 - / документы / изображения / img02.jpg



Для параметра img01 определено значение по умолчанию, содержащее "link", для параметра img02 путь к изображению требуется каждый раз при выполнении отчета.



Идея состоит в том, чтобы вызвать через хранимую процедуру (xp_cmdshell) rs.команда ехе с собой .конфигурационный файл rss для отображения отчета в виде .pdf, что не проблема, так как у меня уже есть вся информация по этой части.



Что происходит...



A. Если я выполняю отчет через браузер (интерфейс ssrs так что без автоматического рендеринга) нет никаких проблем оба изображения отображаются и если я вставляю неправильный путь для img02 маленький красный "X" появится



B. Если я беру строку, сгенерированную из хранимой процедуры, которая вызывает rs.команда exe и я запускаю ее в командной оболочке CMD, отчет генерируется в a .pdf файл, оба изображения отображаются, и если я вставляю неправильный путь для img02 маленький красный" X " apperas



C. я запускаю свою хранимую процедуру, поэтому теперь xp_cmdshell отвечает за запуск rs.команда exe, в этот момент отчет генерируется в a .pdf-файл, но только img01 (тот, что с "default link") видна; img02 либо если путь правильный, либо это не так, у меня всегда есть красный " X "



-- command used
set @cmd = 'rs.exe -i C:try.rss -s http://url/reportserver -v img02=' + @img02 + ' -e Exec2005 -l 600'
insert @output (output) exec @rc = <database>..xp_cmdshell @cmd


[чтобы быть точным, полная последовательность точки C выглядит следующим образом

1-php страница, которая подключается к базе данных как admin (sa)

2-вызов хранимой процедуры (rs.exe)

3-генерация отчетов

Я опустил часть php, так как результат один и тот же, либо я запускаю сохраненный из php, либо непосредственно из management studio.]



Я пытался изменить систему безопасности разрешения на "rs.exe " предоставление полного доступа к "NT SERVICEMSSQLSERVER", но ничего не изменилось.



Я попытался запустить xp_cmdshell с " proxy_account "(не уверен, что на этом я сделал все правильно, я никогда не играл с такого рода вещами, и все" how-to " кажется немного отрывочным), но ничего не изменилось.



Если у кого-то есть какие-либо идеи по этому вопросу, мы будем очень признательны :) (кроме того, если это потенциальная угроза безопасности, по крайней мере, я могу начать с чего-то).



В если вам нужно больше деталей или что-то в моем описании кажется отрывочным, пожалуйста, скажите мне, я постараюсь быть более полным.



С уважением,
F.

784   2  

2 ответов:

Я бы отказался от использования rs.exe, из-за всех проблем, с которыми вы сталкиваетесь.

Вместо этого в Диспетчере отчетов я бы определил новое расписание (через Настройки сайта / расписания).

Затем я бы добавил подписку на отчет, который отображается в формате PDF. Я бы прикрепил эту подписку к новому расписанию, определенному ранее.

Затем я изменил бы хранимую процедуру, чтобы вызвать процедуру SSRS AddEvent, например

-- Execute a Shared Schedule: DECLARE @ScheduleID UNIQUEIDENTIFIER DECLARE @ScheduleName AS VARCHAR(128) = 'My SharedSchedule Name' -- Get the Schedule identifier SET @ScheduleID = (SELECT ScheduleID FROM ReportServer.dbo.SCHEDULE WHERE NAME = @ScheduleName) -- pass the Schedule identifier to the Event insert procedure EXEC ReportServer.dbo.AddEvent @EventType='SharedSchedule', @EventData=@ScheduleID

Ref:

Http://www.sqlblog.nl/2013/10/dynamic-refresh-ssrs-cache-using-sql/

Я наконец понял, в чем была проблема. Все изображения, которые не были показаны в отчете и переданы через "параметр", где динамически генерируются с помощью внешнего источника и затем загружаются в таблицу ssrs "Catalog" с помощью хранимой процедуры. Когда я параметризую всю информацию для загрузки изображения в базу данных ssrs, мне также нужно указать поле, которое определяет свойства безопасности для одного файла. Так что если, очень в принципе и позор мне, папка находится просматриваемый / редактируемый (например) администратором и гостем, но безопасность файла устанавливается только для администратора, тогда изображение не будет отображаться в отчете. Столбец, который ссылается на это свойство в базе данных ssrs, является "PolicyId", содержащимся в таблице "Catalog" базы данных отчетов.

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

Comments

    Ничего не найдено.