Как изменить источник данных в элементе управления ReportViewer - PullRequest
1 голос
/ 17 марта 2011

У меня есть элемент управления ReportViewer (Microsoft.ReportViewer.WebForms) на моей странице. Все мои отчеты используют один источник данных. Я хочу, чтобы мои отчеты запускались в другой базе данных при запуске из среды UAT. Таким образом, расположение отчетов одинаково, но данные поступают из другой базы данных. Кажется, я не могу понять, как это сделать, возможно ли это?

РЕДАКТИРОВАТЬ: это отчеты сервера на SQL Server. Я знаю, что вы можете установить набор данных программно, но я просто хочу, чтобы отчеты указывали на другую базу данных и оставляли остальную часть отчета без изменений. 2005 ТИА,

John

1 Ответ

7 голосов
/ 20 марта 2011

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

1. Создайте параметр - давайте назовем нашу connectionStr.Сделайте так, чтобы он не был пустым, не пустым, выделил один и текст в качестве типа данных.В конце концов, вы захотите скрыть этот параметр, но для тестирования оставьте его видимым.

2. Таким образом, значение, которое вы будете использовать в качестве строки подключения ... (для тестирования я установил его в качестве значения по умолчанию для параметра, но в разделе доступных значений ничего не указывалось)
Источник данных = MySQLServerName; Начальный каталог = MyDatabaseName; Персистентная информация о безопасности = True; ID пользователя = MyUserNameForTheServer; Пароль = MyPasswordForTheServer; MultipleActiveResultSets = True

3.Вам нужна автоматическая учетная запись выполнения на вашем сервере отчетов, или вы получаете это: автоматическая учетная запись выполнения не указана.(RsInvalidDataSourceCredentialSetting).
http://msdn.microsoft.com/en-us/library/ms156302.aspx Я не могу предоставить более подробную информацию, потому что мой босс должен был сделать эту часть для меня.

4. В свойствах вашего источника данных в SSRS ... установите флажок Embedded Connection, выберите тип (у меня обычный MS SQL Server), для строки подключения откройте окно выражения.и поместите: = Parameters! connectionStr.value, а затем нажмите учетные данные и убедитесь, что выбран последний параметр без учетных данных.

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

Мои отчеты находятся на разных серверах, а также на разных экземплярах сервера отчетов.На некоторых серверах им нужно получать свои данные из разных баз данных, в зависимости от того, что угодно.Таким образом, используя строку подключения в качестве параметра, я могу использовать одни и те же отчеты везде и просто развертывать их на разных серверах.Если вам нужно передать эту строку подключения вокруг вашего приложения или средства просмотра отчетов, я предлагаю использовать шифрование.

Как я уже сказал ... SSRS становится смешным, когда вы начинаете это делать.После этого ваши отчеты должны всегда работать в режиме предварительного просмотра, если они не работают даже при наличии правильных строк подключения, то у вас есть проблема, которая не будет решена простым развертыванием на сервере.Устранение неполадок, связанных с этим, когда они находятся на сервере, но не работают, включают проверку разрешений, проверку правильности строки подключения и выполнение всех ваших хранимых процедур и функций в базе данных SQL.

Если вы хотите просто передать имя базы данных и все остальное - то же самое (имя сервера, имя пользователя, пароль), тогда просто установите параметр строки подключения, равный вашему имени базы данных, и для значения выражения источника данных используйте
="Data Source=MySQLServerName;Initial Catalog=" + Parameters!connectionString.value + ";Persist Security Info=True;User ID=MyUserNameForTheServer;Password=MyPasswordForTheServer;MultipleActiveResultSets=True"
Мне нужно было передать все целиком, и вы можете поиграть с настройками учетных данных - вы можете сохранить информацию об имени пользователя и пароле сервера для каждого отчета, чтобы учетная запись автоматического выполнения былане нужно.

...