我正在运行一个项目来检查我们所有 SSRS 2012 数据源的所有登录名,我需要所有数据源的完整列表,包括用于连接的登录名。我在任何地方都找不到它。
我确信数据源登录名必须存储在数据库中的某个位置,或者 RDL 本身。
有谁知道我如何列出这些不同数据源的所有数据源登录名?
Catalog 表中的 Content 列仅包含连接字符串以及数据源是否使用 Windows 凭据(身份验证)或用户名
SELECT SDS.name AS SharedDsName
,SDS.[Path]
,CONVERT(xml, CONVERT(varbinary(max), content)) AS DEF
FROM dbo.[Catalog] AS SDS
WHERE SDS.Type = 5
我确实使用此查询找到了数据源的用户名:
select DSID, ItemID, SubscriptionID, Name, Extension, Link,
CredentialRetrieval, Prompt, ConnectionString,
OriginalConnectionString, OriginalConnectStringExpressionBased,
UserName, Password, Flags, Version
FROM DataSource
但它是加密的——不仅密码被加密,用户名本身也被加密。
我将不胜感激引导到正确的方向。
提前致谢!
罗尼。
在进行了一些挖掘之后,我怀疑您是否能够在任何地方找到未加密的列表。它将其存储在报表服务器中,因此 SSRS 引擎自行对其进行加密;即它在引擎代码中生成密钥和盐,并使用它来加密\解密这些列。您将无法通过 T-SQL 查询它,但使用 PowerShell 解析报告前端的 HTML 可能会更好。
我相信有问题的标签是名为“ui_txtStoredName”的输入的值。我附上一张图片作为例子。
我做了一些进一步的挖掘,发现了这个论坛主题: http ://www.sqlservercentral.com/Forums/Topic1312030-150-1.aspx
我创建了一个 RSS 文件,其内容如该线程中所述(我删除了一些不必要的列)。
我在 SSRS CLI 中运行了一个:
生成的文本文件包含所有数据源信息,包括用于存储凭据的用户名。