У нас есть сервер SQL 2008 R2, на котором работают службы отчетов, и я хотел бы идентифицировать отчеты, которые используют определенные учетные данные для подключения к источнику данных. В этой ситуации отчеты подключаются к источнику данных с использованием пользовательского источника данных с конкретной учетной записью пользователя, которая имеет надлежащую безопасность на сервере SQL для запуска отчетов.Используйте API ReportingService для чтения собственных учетных данных источника данных
План плана заключался в том, чтобы запросить [ReportServer]. [Dbo]. [Каталог], чтобы получить список отчетов. Затем запустите его через код ниже, чтобы идентифицировать отчеты, используя учетные данные, которые меня интересуют. Все это будет сделано в пакете SSIS.
Используя API ReportingService, я могу прочитать имя пользователя учетных данных в строках подключения общих источников данных. Код указан ниже. Однако в моем случае мне нужно загрузить учетные данные источника данных из настраиваемого источника данных, специфичного для отчета, а не для общих источников данных. Метод GetDataSourceContents, похоже, не поддерживает это. Если я укажу путь к файлу & вместо общего источника данных, он генерирует ошибку.
Есть ли другой способ приблизиться к этому? У нас есть сотни отчетов, поэтому использование пользовательского интерфейса для просмотра этой информации было бы непрактичным.
Заранее спасибо.
Примечание: "web_service" является ссылкой веб-службы на сервере отчетов (HTTP: // [имя_сервера] /ReportServer/ReportService2005.asmx?WSDL)
Dim rs As New web_service.ReportingService2005()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim ds_def As web_service.DataSourceDefinition
ds_def = rs.GetDataSourceContents("/Data Sources/data_source_1")
With MyCredentialsOutputBuffer
.AddRow()
.UserName = ds_def.UserName
End With
ReportServer.dbo . Таблица данных DataSource содержит данные о пользовательских источниках данных для конкретных отчетов i ncluding то, что кажется учетными данными в двоичном формате. Это заставило меня поверить, что учетные данные пользовательского источника данных хранились за пределами файла определения отчета rdl. Но я попробую посмотреть в файле rdl. –
UPDATE: Похоже, что разбор файла rdl не работает. Файл rdl указывает на общий источник данных. Я подтвердил это, глядя на него в BIDS. Однако в отчете на сервере отчетов используется собственный источник данных. Фактическая строка подключения источника данных и учетные данные сохраняются в таблице ReportServer.dbo.DataSource. Не похоже, что есть какой-то способ добраться до этого. –