0

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

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

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

还有另一种方法可以解决这个问题吗?我们有数百份报告,因此使用 UI 来查找这些信息是不切实际的。

提前致谢。

注意:“web_service”是对报表服务器的 Web 服务引用 (http://[servername]/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
4

1 回答 1

0

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

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

于 2013-06-12T01:50:21.183 回答