2013-06-12 3 views
0

У нас есть сервер 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 

ответ

0

Вам нужно будет тянуть вниз RDL содержание и разобрать его :(

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

+0

ReportServer.dbo . Таблица данных DataSource содержит данные о пользовательских источниках данных для конкретных отчетов i ncluding то, что кажется учетными данными в двоичном формате. Это заставило меня поверить, что учетные данные пользовательского источника данных хранились за пределами файла определения отчета rdl. Но я попробую посмотреть в файле rdl. –

+0

UPDATE: Похоже, что разбор файла rdl не работает. Файл rdl указывает на общий источник данных. Я подтвердил это, глядя на него в BIDS. Однако в отчете на сервере отчетов используется собственный источник данных. Фактическая строка подключения источника данных и учетные данные сохраняются в таблице ReportServer.dbo.DataSource. Не похоже, что есть какой-то способ добраться до этого. –

Смежные вопросы