我們有一個運行報表服務的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
的ReportServer.dbo .DataSource表包含有關特定報告i的自定義數據源的數據包括什麼似乎是二進制證書。這讓我相信自定義數據源憑據存儲在rdl報告定義文件之外。但是,我會嘗試查找rdl文件。 –
更新:看起來像解析rdl文件將無法正常工作。 rdl文件指向共享數據源。我證實了這一點,我在BIDS中看到它。但是,報表服務器上的報表使用自定義數據源。實際的自定義數據源連接字符串和憑證存儲在ReportServer.dbo.DataSource表中。看起來不像有什麼辦法可以達到這個目標。 –