1

我已经向 SSRS 报告服务器添加了许多数据源登录无效的报告,我想使用脚本更新用户名和密码来更新它,这样我就不必单独更新每个报告。

但是,据我所知,这些字段存储为图像并已加密。我找不到有关它们如何加密或如何更新它们的任何信息。用户名和密码似乎存储在 dbo.DataSource 表中。有任何想法吗?我希望脚本在 SQL 中运行。

登录信息示例:

报表管理器示例

4

2 回答 2

2

我对破解 Reporting Services 表非常、非常、非常谨慎。可能有人可以提供一种可靠的方法来执行您的建议,但我觉得这是破坏整个安装的好方法。

我的建议是您使用 Reporting Services API 并编写一个小型应用程序来为您执行此操作。API 的功能非常全面——几乎可以从 Report Manager 网站做任何事情,您可以使用 API 进行操作——而且使用起来相当简单。

以下代码并不完全符合您的要求——它将报告指向一个共享数据源——但它应该向您展示您需要做什么的基础知识。

    public void ReassignDataSources()
    {
        using (ReportingService2005 client = new ReportingService2005)
        {
            var reports = client.ListChildren(FolderName, true).Where(ci => ci.Type == ItemTypeEnum.Report);

            foreach (var report in reports)
            {
                SetServerDataSource(client, report.Path);
            }
        }
    }

    private void SetServerDataSource(ReportingService2005 client, string reportPath)
    {
        var itemSources = client.GetItemDataSources(reportPath);
        if (itemSources.Any())
            client.SetItemDataSources(
                reportPath,
                new DataSource[] { 
                        new DataSource() { 
                            Item = CreateServerDataSourceReference(), 
                            Name = itemSources.First().Name 
                        } 
                    });
    }

    private DataSourceDefinitionOrReference CreateServerDataSourceReference()
    {
        return new DataSourceReference() { Reference = _DataSourcePath };
    }
于 2013-01-28T23:35:48.963 回答
1

我怀疑这是否直接回答了您的问题,但我希望它可以提供一些帮助。 MSDN 指定凭据

出于这个原因,MSDN 还建议使用共享数据源:请参阅MSDN on shared data sources

于 2013-01-28T23:15:45.503 回答