将所有SSRS报表的共享数据源路径更新为不同路径

8

我正在处理 SSRS 报表。

最近,我已将所有 SSRS 报表的文件夹位置更改为不同路径。同时,我需要更改数据源路径。(因为我又移动了报表,所以需要重新设置数据源)所以,我可以通过进入Manage手动完成此操作。

但是,是否有一种快捷的方法来设置所有 SSRS 报表的数据源路径呢?

2个回答

16

最终,我找到了解决方案,让我的一天变得美好。

我浪费了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

它将显示所有没有连接字符串的报告。因此,现在您需要使用您的 [链接]进行更新。

注意:要获取最新的 [链接] - 您需要手动设置一个报告的 Datasource 路径,并执行下面的查询,这将提供您最新的 [链接]

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%'

注意:如果您直接在实时服务器上执行此查询,请小心。 首次尝试仅使用上述查询更新一个特定报告,然后再为其他报告进行操作,仅在确有必要并且已经运行良好的情况下这样做。


3
“WHERE dSource.flags = dSource.flags”的意义是什么? - Mike W
你的报表服务器有网页浏览器界面吗?我有,但我找不到我在浏览器界面中输入的任何内容在数据库中的记录... - SketchyTurtle

1
你可以使用RS.exe或ReportSync工具来移动报表和数据源。
同时,您还可以使用T-SQL脚本更新ReportServer数据库中的Catalog表。
使用此查询来查看数据源路径。
SELECT
  a.Name,
  b.Path
FROM DataSource a
INNER JOIN Catalog b
  ON a.ItemID = b.ItemID

更新数据源的路径,使其指向报表路径。请注意,如果数据源不是部署到特定文件夹的共享数据源,则此操作将起作用。

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.exeReportSync

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


1
抱歉,这不会更新数据源路径。它将更新报表路径。而我想要更新数据源路径。:( 是的,因为它是共享数据源,所以它无法工作。 - Pedram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接