使用ReportingService API读取自定义数据源凭据

使用ReportingService API读取自定义数据源凭据,api,reporting-services,ssis,ssrs-2008,Api,Reporting Services,Ssis,Ssrs 2008,我们有一台运行reporting services的SQL 2008 R2服务器,我想识别使用特定凭据连接到数据源的报表。在这种情况下,报表使用具有特定用户帐户的自定义数据源连接到数据源,该帐户在SQL server上具有运行报表所需的适当安全性 计划是查询[ReportServer].[dbo].[Catalog]以获得报告列表。然后运行下面的代码,使用我感兴趣的凭据识别报告。所有这些都将在SSIS包中完成 使用ReportingService API,我可以在共享数据源的连接字符串中读取凭据

我们有一台运行reporting services的SQL 2008 R2服务器,我想识别使用特定凭据连接到数据源的报表。在这种情况下,报表使用具有特定用户帐户的自定义数据源连接到数据源,该帐户在SQL server上具有运行报表所需的适当安全性

计划是查询[ReportServer].[dbo].[Catalog]以获得报告列表。然后运行下面的代码,使用我感兴趣的凭据识别报告。所有这些都将在SSIS包中完成

使用ReportingService API,我可以在共享数据源的连接字符串中读取凭据的用户名。代码如下所示。但是,在本例中,我需要从特定于报表的自定义数据源而不是共享数据源加载数据源凭据。GetDataSourceContents方法似乎不支持这一点。如果我提供报表名称和路径而不是共享数据源,则会生成错误

还有别的办法吗?我们有数百份报告,因此使用UI查找这些信息是不切实际的

提前谢谢

注意:“web_服务”是对报表服务器的web服务引用(http://[servername]/ReportServer/ReportService2005.asmx?WSDL)


您需要下拉rdl内容并对其进行解析:(


嵌入的数据源信息存储在.rdl中,而不是通过api获得的共享数据集项。即使这样,您也无法检索数据源密码。

ReportServer.dbo.DataSource表包含有关特定报表的自定义数据源的数据,包括二进制凭证。这让我相信e自定义数据源凭据存储在rdl报表定义文件之外。但是,我将尝试查找rdl文件。更新:似乎解析rdl文件不起作用。rdl文件指向共享数据源。我在BIDS中查看时确认了这一点。但是,报表服务器上的报表使用自定义数据源。该操作自定义数据源连接字符串和凭据存储在ReportServer.dbo.DataSource表中。似乎没有任何方法可以实现此目的。
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