DataSource對象不包含這樣的屬性,因爲它是各種數據源的基類。儘管如此,這個DS是SQL Server類型的,因此ConnectionString的概念是有效的。是否可以在報告中顯示連接字符串?
有什麼辦法從DataSource中提取這些信息嗎?
DataSource對象不包含這樣的屬性,因爲它是各種數據源的基類。儘管如此,這個DS是SQL Server類型的,因此ConnectionString的概念是有效的。是否可以在報告中顯示連接字符串?
有什麼辦法從DataSource中提取這些信息嗎?
好的,首先,爲什麼?做暴露連接字符串等事情會暴露安全風險,甚至會涉及到糟糕的做法。說有幾件事情,但沒有一件是優雅和更多的參與。
如果您的報告是「已部署」,則在SSRS所在的服務器上的「ReportServer」上有一個目錄。這假設你有一個SSRS服務器,報告是一個「託管」的RDL報告而不是RDLC報告。說,你可以把數據集中的sql得到這些將類似於:
WITH ItemContentBinaries AS
(
SELECT
Name
, Type
, CONVERT(VARBINARY(MAX), Content) AS Content
FROM ReportServer.dbo.Catalog
WHERE Type = 5 -- datasources
)
, ItemContentNoBOM AS
(
SELECT
Name
, CASE WHEN LEFT(Content, 3) = 0xEFBBBF THEN CONVERT(VARBINARY(MAX), SUBSTRING(Content, 4,LEN(Content)))
ELSE Content
END AS Content
FROM ItemContentBinaries
)
, xmlcontent as
(
SELECT
Name AS DataSourceName
, CONVERT(xml, replace(Content, 'xmlns="http://schemas.microsoft.com/sqlserver/reporting/2006/03/reportdatasource"', '')) AS ContentXML
FROM ItemContentNoBOM
)
Select
DataSourceName
, ContentXML
, ContentXML.query('/DataSourceDefinition/ConnectString/.').value('.', 'varchar(max)')
from xmlcontent
您可以嘗試將「自定義代碼」在您的報告,從RDL語言的連接字符串。 http://social.msdn.microsoft.com/Forums/sqlserver/en-US/27de3f46-5174-480d-b4d1-5e32772dae35/ssrs-2005-custom-code-shared-data-source-connection-string?forum=sqlreportingservices
您可能在C#或VB.net的代碼中做類似的事情來獲取值,但我相信我必須託管報告。它的代碼是類似於此:
How to get the data source information from a SSRS report, using .NET
你可以做的2和3的變化和消費」 .rds'文件和XML解析出來的C#或VB.NET。
所有這些解決方案都要求使用報告正在部署或你認識的一個服務器上的固定位置是該報告的數據源是,除了2,我從來沒有嘗試過。據我所見,連接字符串是一個嵌入式對象,因爲它可能包含密碼,所以不會被公開。
確實,我需要jsut服務器和數據庫名稱。 =)不是整個連接字符串。 –