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

Мне нужно, чтобы в моих отчетах были строки динамических подключений. У нас есть несколько серверов баз данных и каталогов, и мы хотим поддерживать только один файл отчета. Единственное решение, которое я смог найти, которое позволило бы мне сделать это программно, было «Строки подключения на основе выражений». Обычно я программно передаю значения параметров в отчет для ServerName и InitialCatalog.

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

ОДНАКО это не работает для отчетов с параметрами, управляемыми данными. Например, у меня есть отчет, который фильтрует данные на основе параметра «Город», который пользователь выбирает при первом открытии отчета. Параметр City - это данные фида из запроса. Кажется, я не могу просто установить параметры подключения и позволить службам отчетов запрашивать параметр City.

Я открыт для других идей, кроме «строк подключения на основе выражений».

Спасибо.




Ответы (2)


У меня такая же проблема. Решение оказалось на удивление простым - просто переместите «ServerName» и «InitialCatalog» в начало списка параметров.

person Aleksandr Demidov    schedule 08.06.2011

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

person SPE109    schedule 27.06.2010
comment
Мне не нужны несколько версий отчета (согласно вопросу). Мне нужен только один файл отчета. Это действительно не должно быть так сложно, как это делает MS. В Crystal Reports все, что вам нужно сделать, это вызвать SetDateSource (ну и заплатить абсурдные лицензионные сборы, если вы хотите развернуть его на своем веб-сайте) - person Justin; 06.07.2010
comment
Я просто предлагал обходной путь, при котором у вас будет одна копия отчета в разработке, но развернуть несколько версий и обновить источник данных при развертывании. Я использовал этот подход раньше, и он работал достаточно хорошо. Вы просто вызываете SetItemDataSources в файле сценария rss при развертывании отчета. - person SPE109; 06.07.2010