我有一个包含许多共享数据集的项目,其中许多不再使用。
我想知道哪些部署的数据集被使用,哪些没有。
那么如何列出 SSRS 文件夹中的所有报告以及报告中使用的所有数据集?
最佳答案
所有报告和所有数据集都存储在 Catalog 表中。
一些试验和错误使我得出结论,类型列值 2 列出了所有报告,类型列值 8 列出了所有数据集。
有一个名为 DataSets 的多对多表,它与 Catalog 表有 2 个外键关系。 LinkId 与 Catalog 表中的数据集相关,ItemId 与 Catalog 表中的报表相关。
这是我的查询:
declare @path as varchar(100) = '/Use Your Folder Path Here%';
with
Catalog_DataSets
as (select c.ItemID as DataSetItemId,
c.Path as DataSetPath,
c.Name as DataSetName
from dbo.Catalog as c
where c.Type = 8
and c.Path like @path),
Catalog_Reports
as (select c.ItemID as ReportItemId,
c.Path as ReportPath,
c.Name as ReportName
from dbo.Catalog as c
where c.Type = 2
and c.Path like @path),
ReportDataSetUsage
as (select ds.ItemID as ReportItemId,
ds.LinkID as DataSetItemId,
ds.Name as UsageName
from dbo.DataSets as ds)
select ds.DataSetItemId,
ds.DataSetPath,
ds.DataSetName,
count(rep.ReportItemId) as UsedByReportsCount
from Catalog_DataSets as ds
left join ReportDataSetUsage as ds_to_report
on ds_to_report.DataSetItemId = ds.DataSetItemId
left join Catalog_Reports as rep
on rep.ReportItemId = ds_to_report.ReportItemId
group by ds.DataSetItemId,
ds.DataSetPath,
ds.DataSetName
现在您可以使用它来查找报表和数据集之间的依赖关系,查找不再需要的数据集,因为它们不再被任何报表使用等。
关于reporting-services - 在 SQL Server 报表服务器目录中查找哪些报表使用哪些数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69450060/