【问题标题】:Update Shared Datasource Path of all SSRS reports to different path将所有 SSRS 报告的共享数据源路径更新到不同的路径
【发布时间】:2016-01-13 06:01:05
【问题描述】:

我正在处理SSRS 报告。

最近我已将所有SSRS 报告的文件夹位置更改为不同的路径。我还需要更改数据源路径。 (因为我再次移动了报告,所以我需要设置数据源)所以我不能手动转到Manage

但是有什么捷径可以为所有SSRS 报告设置数据源路径吗?

【问题讨论】:

    标签: sql-server reporting-services ssrs-2008-r2 ssrs-2012 ssrs-2014


    【解决方案1】:

    终于,我找到了解决方案,度过了愉快的一天。

    我浪费了 5 个小时来寻找解决方案。

    要更新共享的Datasource 路径 - 需要更新Report ServerDatasource 表。

    SELECT cLog.Path,dSource.name
    FROM   DataSource    AS dSource
           JOIN CATALOG  AS cLog ON  cLog.ItemID = dSource.ItemID
    WHERE  dSource.flags = dSource.flags AND dSource.Link IS NULL AND dSource.ConnectionString IS NULL 
            AND dSource.NAME = 'NameofDatasource' AND cLog.path LIKE '%foldername%'
    ORDER BY
           PATH
    

    它将显示所有没有连接字符串的报告。所以现在,您必须使用您的[Link] 进行更新。

    注意: 要获取最新的[Link] - 您需要通过手动设置Datasource 路径来设置报告之一并执行以下查询,这将为您提供最新的[Link]

    SELECT ds.Link
    FROM   DataSource    AS ds
           JOIN CATALOG  AS c ON  c.ItemID = ds.ItemID
    WHERE  ds.NAME = 'NameofDatasource' AND c.path LIKE '%foldername%' AND ds.Link IS NOT NULL
    

    现在,只需要使用相同的 where 子句对其进行更新。因此它将更新最新的[Link] 到所有报告。

    UPDATE dSource set [Flags] = [Flags] | 2, [Link] = 'PutLatestLink'
    FROM   DataSource    AS dSource
           JOIN CATALOG  AS cLog ON  cLog.ItemID = dSource.ItemID
    WHERE  dSource.flags = dSource.flags AND dSource.Link IS NULL AND dSource.ConnectionString IS NULL 
            AND dSource.NAME = 'NameofDatasource' AND cLog.path LIKE '%foldername%'
    

    注意: 如果您直接在实时服务器上执行此查询,请小心。第一次,尝试使用上述查询仅更新一个特定报告,然后如果确实需要并且工作正常,则为其他报告做。

    【讨论】:

    • “WHERE dSource.flags = dSource.flags”的意义何在?
    • 您的报表服务器是否有 Web 浏览器端?我这样做了,但我在数据库中的浏览器端找不到任何东西......
    【解决方案2】:

    您可以使用 RS.exe 或 ReportSync 实用程序来移动报告和数据源。

    您还可以使用 T-SQL 脚本从 ReportServer 数据库更新 Catalog 表。

    使用此查询来探索您的数据源路径。

    SELECT
      a.Name,
      b.Path
    FROM DataSource a
    INNER JOIN Catalog b
      ON a.ItemID = b.ItemID
    

    更新数据源的path 以指向报告路径。请注意,如果 DataSource 不是部署到特定文件夹的共享数据源,它将起作用。

    UPDATE b
    SET b.Path = '<your_path>'
    FROM DataSource a
    INNER JOIN Catalog b
      ON a.ItemID = b.ItemID
    WHERE a.Name IN ('Datasource1', 'Datasource2')
    

    我不确定这是否有效,因为我现在无法尝试,所以 我建议您使用公认的迁移工具 RS.exe报告同步

    如果这对你有帮助,请告诉我。

    【讨论】:

    • 抱歉,这不会更新数据源路径。这将更新报告路径。我想更新数据源路径。 :( 是的;因为它是共享数据源,所以不能正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多