7

我正在处理SSRS报告。

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

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

4

2 回答 2

12

最后,我找到了解决方案并度过了愉快的一天。

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

更新共享Datasource路径 - 需要Datasource更新Report Server.

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

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

于 2016-01-20T06:55:20.353 回答
1

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

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

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

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

让我知道这是否对您有帮助。

于 2016-01-13T13:25:00.140 回答