Sql server 将所有SSRS报告的共享数据源路径更新为不同路径
我正在做SSRS的报告 最近,我已将所有Sql server 将所有SSRS报告的共享数据源路径更新为不同路径,sql-server,reporting-services,ssrs-2008-r2,ssrs-2012,ssrs-2014,Sql Server,Reporting Services,Ssrs 2008 R2,Ssrs 2012,Ssrs 2014,我正在做SSRS的报告 最近,我已将所有ssr报告的文件夹位置更改为不同的路径。我还需要更改数据源路径。(由于我再次移动了报告,我需要设置数据源),因此我无法通过转到Manage手动删除它 但是,是否有任何快捷方式可以将数据源路径设置为所有ssr报告?您可以使用RS.exe或ReportSync实用程序来移动报告和数据源 您还可以使用T-SQL脚本从ReportServer数据库更新目录表 使用此查询可浏览数据源路径 SELECT a.Name, b.Path FROM DataSour
ssr
报告的文件夹位置更改为不同的路径。我还需要更改数据源路径。(由于我再次移动了报告,我需要设置数据源),因此我无法通过转到Manage
手动删除它
但是,是否有任何快捷方式可以将数据源路径设置为所有
ssr
报告?您可以使用RS.exe或ReportSync实用程序来移动报告和数据源
您还可以使用T-SQL脚本从ReportServer数据库更新目录
表
使用此查询可浏览数据源路径
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')
更新b
设置b.路径=“”
来自数据源a
内部联接目录b
在a.ItemID=b.ItemID上
其中a.名称位于('Datasource1','Datasource2')
我不确定这是否有效,因为我现在无法尝试
我建议您使用公认的迁移工具RS.exe或
报告同步
如果这对您有帮助,请告诉我。最后,我找到了解决方案,度过了美好的一天 我已经浪费了5个小时来寻找解决方案 要更新共享的
数据源
路径-需要更新数据源
报表服务器的表
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]
-您需要通过手动设置数据源
路径设置其中一个报告,并执行下面的查询,这将为您提供最新的[Link]
现在,只剩下使用相同的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%'
注意:如果您直接在live server上执行此查询,请小心。这是第一次尝试使用上述查询仅更新一个特定报告,如果确实需要并且运行良好,则尝试更新其他报告。很抱歉,这将不会更新数据源路径。这将更新报告路径。我想更新数据源路径:(是的,它不工作,因为它是共享数据源“WHERE dSource.flags=dSource.flags”有什么意义?您的报表服务器是否有web浏览器端?我有,但在数据库的浏览器端找不到任何内容。。。
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%'