我正在处理 SSRS
报表。
最近,我已将所有 SSRS
报表的文件夹位置更改为不同路径。同时,我需要更改数据源路径。(因为我又移动了报表,所以需要重新设置数据源)所以,我可以通过进入Manage
手动完成此操作。
但是,是否有一种快捷的方法来设置所有 SSRS
报表的数据源路径呢?
我正在处理 SSRS
报表。
最近,我已将所有 SSRS
报表的文件夹位置更改为不同路径。同时,我需要更改数据源路径。(因为我又移动了报表,所以需要重新设置数据源)所以,我可以通过进入Manage
手动完成此操作。
但是,是否有一种快捷的方法来设置所有 SSRS
报表的数据源路径呢?
最终,我找到了解决方案,让我的一天变得美好。
我浪费了5个小时的时间来找到这个解决方案。
要更新共享的Datasource
路径 - 需要更新Report Server
的Datasource
表。
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%'
注意:如果您直接在实时服务器上执行此查询,请小心。 首次尝试仅使用上述查询更新一个特定报告,然后再为其他报告进行操作,仅在确有必要并且已经运行良好的情况下这样做。
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.exe或ReportSync。
如果这对您有帮助,请告诉我。