Запрос на поиск списка * all * SSRS DataSets через * все * Отчеты SSRS на экземпляре ReportServer

Я хотел бы сгенерировать список всех отчетов SSRS и соответствующих им наборов данных (а не источников данных) и их соответствующих имен командных текстов / хранимых процедур во всех отчетах на сервере SSRS (включая встроенные DataSets).

Дополнительной приятной особенностью было бы возможность фильтровать те, которые использовались в данных отчета (т. Е. Привязаны к таблицам и т. Д. В теле отчета, а не использоваться в качестве источника данных для раскрывающегося списка в параметрах).

Это кажется лучше, поскольку он обрабатывает общие и встроенные источники данных …

http://www.bengribaudo.com/blog/2014/08/07/3278/ssrs-auditing-report-queries

-- Provided "as is" with no warranties of any kind. User assumes all risks of use. /* The XML XQuery statements used below ignore namespace so that information can be retrieved from multiple RDL versions. */ use ReportServer ;WITH CatalogWithXml AS ( -- XMLifyies Catalog's Content column. /* For report (Type = 2) and shared data source (Type = 5) objects, the image-typed column Content stores the XML RDL defining the object. We convert this column to XML so that SQL's XML type's functions can be used on it. */ SELECT *, ContentXml = (CONVERT(XML, CONVERT(VARBINARY(MAX), Content))) FROM Catalog ), SharedDataSources AS ( -- Details on uses of shared data sources. -- * Unused data sources are ignored. -- * ItemID identifies the catalog entry (eg report) using the shared data source. It is not -- the data source's ID! /* Table DataSource contains a row for each data source (embedded or shared) used in each report. Its column Name stores the data source name, as defined in the report. Shared data sources are defined (RDL XML) in the catalog. Inner joining between these two tables limits this CTE's resultset to details on shared data sources because embedded data sources don't have Link-ed rows in the catalog. */ SELECT ds.ItemID, SharedDataSourceName = c.Name, LocalDataSourceName = ds.Name, DataProvider = ContentXML.value('(/*:DataSourceDefinition/*:Extension)[1]', 'NVARCHAR(260)'), ConnectionString = ContentXML.value('(/*:DataSourceDefinition/*:ConnectString)[1]', 'NVARCHAR(MAX)') -- Each DataSource row with a Link value represents a use of a shared data source. FROM DataSource ds -- Uses the Link value to look up the catalog entry defining the shared data source. JOIN CatalogWithXml c ON ds.Link = c.ItemID ), AllDataSources AS ( -- Details on both embedded & shared data sources *used* by reports. /* Embedded data sources are defined in the hosting report's RDL. Shared data sources are referenced (but not defined) in this RDL. We extract the relevant details and then join to the SharedDataSources CTE to assemble a resultset with details on each data source (embedded and shared) used by each report (identified by ItemID). */ SELECT r.ItemID, r.LocalDataSourceName, -- embedded data source's name or local name given to shared data source sds.SharedDataSourceName, SharedDataSource = CAST ((CASE WHEN sds.SharedDataSourceName IS NOT NULL THEN 1 ELSE 0 END) AS BIT), DataProvider = ISNULL(r.DataProvider, sds.DataProvider), ConnectionString = ISNULL(r.ConnectionString, sds.ConnectionString) FROM ( SELECT c.*, LocalDataSourceName = DataSourceXml.value('@Name', 'NVARCHAR(260)'), DataProvider = DataSourceXml.value('(*:ConnectionProperties/*:DataProvider)[1]', 'NVARCHAR(260)'), ConnectionString = DataSourceXml.value('(*:ConnectionProperties/*:ConnectString)[1]', 'NVARCHAR(MAX)') FROM CatalogWithXml c CROSS APPLY ContentXml.nodes('/*:Report/*:DataSources/*:DataSource') DataSource(DataSourceXml) WHERE c.Type = 2 -- limit to reports only ) r LEFT JOIN SharedDataSources sds ON r.ItemID = sds.ItemID AND r.LocalDataSourceName = sds.LocalDataSourceName ), DataSets AS ( -- Details on data sets used in reports. /* Outputs one row per data set used in each report. */ SELECT ItemID, DataSetName = QueryXml.value('@Name', 'NVARCHAR(256)'), DataSourceName = QueryXml.value('(*:Query/*:DataSourceName)[1]', 'NVARCHAR(260)'), CommandType = QueryXml.value('(*:Query/*:CommandType)[1]', 'NVARCHAR(15)'), CommandText = QueryXml.value('(*:Query/*:CommandText)[1]', 'NVARCHAR(MAX)') FROM CatalogWithXml CROSS APPLY ContentXml.nodes('/*:Report/*:DataSets/*:DataSet') QueryData(QueryXml) ), Data AS ( -- Combines data set and data source details with additional information from Catalog. SELECT ds.ItemID, Name, Path, LocalDataSourceName, SharedDataSource, SharedDataSourceName, DataProvider, ConnectionString, DataSetName, CommandType = ISNULL(CommandType, 'Text'), -- "Text" = default command type CommandText FROM DataSets ds JOIN AllDataSources src ON src.ItemID = ds.ItemID AND src.LocalDataSourceName = ds.DataSourceName JOIN Catalog c ON ds.ItemID = c.ItemID ) SELECT * FROM Data 

Следующий скрипт был опубликован в репозитории скриптов Technet Олафом Хелпером .

 -- List datasets with command text for all SSRS reports ;WITH XMLNAMESPACES (DEFAULT 'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' ,'http://schemas.microsoft.com/sqlserver/reporting/reportdesigner' AS rd) ,DEF AS (SELECT RPT.ReportPath ,R.RptNode.value('(./Query/DataSourceName)[1]', 'nvarchar(425)') AS DataSourceName ,R.RptNode.value('@Name[1]', 'nvarchar(425)') AS DataSetName ,REPLACE(REPLACE(LTRIM((R.RptNode.value('(./Query/CommandText)[1]', 'nvarchar(4000)'))) ,'&gt;', '>') ,'&lt;', '<') AS CommandText FROM (SELECT RPT.Path AS ReportPath ,RPT.name AS ReportName ,CONVERT(xml, CONVERT(varbinary(max), RPT.content)) AS contentXML FROM ReportServer.dbo.[Catalog] AS RPT WHERE RPT.Type = 2 -- 2 = Reports ) AS RPT CROSS APPLY RPT.contentXML.nodes('/Report/DataSets/DataSet') AS R(RptNode) ) SELECT DEF.ReportPath ,DEF.DataSourceName ,DEF.DataSetName ,DEF.CommandText FROM DEF -- Optional filter: -- WHERE DEF.CommandText LIKE '%/[Team System/]%' -- MDX query against TFS cube ORDER BY DEF.ReportPath ,DEF.DataSourceName ,DEF.DataSetName 

Он тестируется в SSRS 2012 и SSRS 2008 .

Источник можно найти здесь

Надеюсь, поможет.

  • Текст в PDF-рендеринг отчета Reporting Services «Надпечатки»
  • Как идентифицировать все отчеты SSRS
  • службы отчетов (ssrs) с именем пользователя / паролем
  • Производительность SSRS - свойство фильтра vs WHERE
  • Автоматически печатать отчет SSRS?
  • объемная вставка работает в ssms, но не в других приложениях
  • Ошибка rsExecutionNotFound в службах отчетов SQL Server
  • SSRS, сравнивающий текущую строку с предыдущей строкой
  • T-SQL Объявление строки подключения в качестве параметра
  • Какую альтернативу мне нужно левым? Присоединяйтесь к этому запросу?
  • Повысить производительность, использующую isnull в предложении where
  • Interesting Posts

    Подзапрос SQL / объединение

    Множественные строки в столбцы

    Наиболее эффективное (пространство для хранения) способ хранения гистограмм в SQL

    Отбрасывать все столбцы в таблице, если их имена соответствуют определенному шаблону в SQL Server

    Запрос SQL на получение доступной даты

    Если я восстановил базу данных и перезаписал оригинал, есть ли способ вернуться? Студия управления SQL

    Установка нескольких переменных для одного столбца в инструкции SELECT

    Разработка базы данных для хранения информации человека, которая изменяется со временем?

    Сравнение столбцов одной таблицы в sql-сервере

    Как выбрать строки с столбцом, содержащим предоставленные значения

    Возвращает NULL, если значение COUNT меньше 1

    Утилита BCP в SQL Server 2008 – Процедура ожидает параметр 'no_output' типа varchar

    Поиск позиции первого символа строки

    DataTable пуст от вызова хранимой процедуры

    Запросить несколько строк с разделяемым ключом в одну строку результата для каждого ключа

    Давайте будем гением компьютера.