2013-06-12 36 views
0

我們有一個運行報表服務的SQL 2008 R2服務器,我想識別使用特定憑證連接到數據源的報表。在這種情況下,報告使用具有特定用戶帳戶的自定義數據源連接到數據源,該帳戶在SQL Server上具有適當的安全性以運行報告。使用ReportingService API讀取自定義數據源憑據

計劃計劃是查詢[ReportServer]。[dbo]。[Catalog]以獲取報告列表。然後通過下面的代碼運行它,以使用我感興趣的憑據來識別報告。所有這些都將在SSIS包中完成。

使用ReportingService API,我可以讀取共享數據源的連接字符串中的憑據的用戶名。代碼如下所示。但是,就我而言,我需要從特定於報告的自定義數據源加載數據源憑據,而不是共享數據源。 GetDataSourceContents方法似乎不支持這一點。如果我提供報告名稱&而不是共享數據源,則會生成錯誤。

是否有另一種方法來解決這個問題?我們有數百個報告,因此使用UI來查看這些信息將是不切實際的。

在此先感謝。

注: 「使用web_service」 是Web服務引用到報表服務器(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的自定義數據源的數據包括什麼似乎是二進制證書。這讓我相信自定義數據源憑據存儲在rdl報告定義文件之外。但是,我會嘗試查找rdl文件。 –

+0

更新:看起來像解析rdl文件將無法正常工作。 rdl文件指向共享數據源。我證實了這一點,我在BIDS中看到它。但是,報表服務器上的報表使用自定義數據源。實際的自定義數據源連接字符串和憑證存儲在ReportServer.dbo.DataSource表中。看起來不像有什麼辦法可以達到這個目標。 –