SSRS Catalog Inventory
Overview
SSRS Catalog Inventory is the page to open on a report server you have just inherited. The web portal browses one folder at a time, which answers “what is in Finance” and never answers “what is on this server”. This page answers the second question, and the answer is usually larger and older than anybody expects.
Every row in the report server’s Catalog table is listed: folders, reports, linked reports, shared data sources, shared datasets, resources, and on newer servers KPIs, mobile reports, Power BI reports and Excel workbooks. For each one the page shows its type, its size, when it was published and last changed and by whom, and a notes column for the things worth knowing about it:
- A linked report whose target is gone. A linked report has no definition of its own. Delete the report it points at and the linked report stays in the catalog, looking normal, unable to run.
- Hidden items. Hiding an item in the portal does not stop it running or having permissions. It only stops people auditing by browsing from seeing it.
- Items with their own permissions. An item that breaks inheritance from its folder is one a folder level permissions review will miss.
- Large resources. A single resource over 5 MB is named, because one embedded file routinely outweighs every report definition on the server.
Where to find it
This report is only shown for a database that holds a Reporting Services catalog.
- Tree: expand the report server database, then Real Time > SSRS > Catalog Inventory.
- Toolbar: the Catalog button on SSRS Data Sources, SSRS Shared Datasets, SSRS Report Parameters, SSRS Never Run, SSRS Permissions and SSRS What Fills This Database.
- Right click: Where it lives in the catalog on the Data Sources grid, This report in the catalog on the Report Parameters grid, This item in the catalog on the Never Run grid and This dataset in the catalog on the Shared Datasets grid. Each of these opens this page with that item’s row already selected. The catalog items on the grids of SSRS Permissions and SSRS Snapshots and History also open this page.
- Double click: a bar on SSRS Data Sources, SSRS Report Parameters or SSRS Never Run opens this page with that item selected.

Requirements
- A Reporting Services catalog database, normally called
ReportServer. The SSRS pages are offered whendbo.ExecutionLoganddbo.Catalogboth exist in the database being looked at. SELECTondbo.Cataloganddbo.Users.- Newer report servers keep each item’s size in
Catalog.ContentSize. The page checks for that column before it sends its query. Where it is missing, the size is computed withDATALENGTH(Content)instead, which is the same number arrived at more slowly, and the line under the headline says so.
The three views
The toolbar switches the chart between By size, By age and By folder. The grid below does not change with the view.
By size

One bar per item, ranked by bytes of content, largest first. Folders are left out of this view and of By age, because a folder has no content of its own. The line under each name is the item’s type and the folder it lives in.
By age
The same items ranked by how long ago they were last changed, oldest first. The text on the right reads as “3 months ago” or “yesterday”, and an item with no recorded change date sorts to the top as unknown, with no bar, so it does not stretch the scale for every other item.
By folder
One bar per folder, with the bytes of every item held directly in it added together. Subfolders are not rolled up into their parents on purpose: a recursive total puts every byte on the server under the root, which is true and useless. What this view is for is spotting the folder somebody filled up. The root folder is labeled (root).
Colors and outlines
In the size and age views, a bar’s color says what the page found about the item:
| Color | Meaning |
|---|---|
| Green | Nothing to report |
| Amber | Hidden from the portal |
| Red | A linked report whose target is no longer in the catalog |
Hidden items and broken linked reports also get an amber outline around the bar. Folder bars are always green.
The chart draws at most the first thirteen rows. When there are more, the note under the chart says how many are shown out of how many, and the grid holds them all. Hover over a bar for the item’s full path, type, size, who last changed and published it, its description and its notes.
Reading the grid

| Column | What it holds |
|---|---|
| Path | The item’s full catalog path. The root folder shows as / |
| Type | Folder, Report, Linked report, Data source, Shared dataset, Resource, and so on, with the sub type in brackets where the catalog records one |
| Size | Bytes of content, shown and exported with a unit such as KB or MB. The cell holds the plain byte count underneath, so the column sorts by size |
| Last changed | When the item was last modified |
| Changed by | The account that last modified it |
| Published | When the item was created |
| Published by | The account that created it |
| Description | The description entered in the portal |
| Notes | What the page found: a broken or working link target, hidden, its own permissions, a large resource |
The Notes cell is drawn amber for a hidden item and red for a broken linked report.
Findings
The headline counts the catalog items, then the reports, data sources and shared datasets among them, then the total bytes of content. The line under it adds whichever of these apply:
- Linked reports that point at something no longer in the catalog.
- Items hidden from the portal.
- Items that break permission inheritance from their folder, with a pointer to the Permissions page.
- A single item that is more than a quarter of all the content on the server.
- The month the least recently changed item was last touched, when that is over a year ago.
- That sizes were measured with
DATALENGTH, when the server has noContentSizecolumn. - That the page reads the catalog tables directly, so it shows every item on the report server rather than the subset the portal would show you.
Actions
- Click a bar to select that item’s row in the grid. In the By folder view, clicking a folder selects the first grid row in that folder.
- Double click an item’s bar to do what its first “go to” menu item does: an item that can be run opens SSRS Report Parameters with its parameters selected, and a shared data source, shared dataset or other item with data sources of its own opens SSRS Data Sources with its rows selected. Double clicking any other item, or a folder in the By folder view, selects as a click does.
- Right click a grid row, or an item’s bar, for:
- Copy the path, Copy the item id, and Copy what it links to for a linked report
- Go to its parameters and Look for it on Never Run, for items that can be run: reports, linked reports, mobile reports, Power BI reports and Excel workbooks. Each opens the other page for the whole report server with this item’s rows selected. An item that is not on SSRS Never Run has run inside the log’s retention window, and nothing is selected there.
- Go to its data sources, for a report, Power BI report, shared data source or shared dataset, which opens SSRS Data Sources with its rows selected, or All data sources on this server for any other item
- Permissions across this server, for an item with permissions of its own
- What fills this database
- Right click a folder’s bar in the By folder view, or the chart away from a bar, for Copy Chart to Clipboard.
- The toolbar’s Never run, Data sources and Storage buttons open SSRS Never Run, SSRS Data Sources and SSRS What Fills This Database.
Where the data comes from
One query against dbo.Catalog, joined twice to dbo.Users for the creating and modifying accounts, and joined to itself on LinkSourceID for the path a linked report points at.
That self join is an outer join deliberately. A linked report whose target has been deleted is the finding, and an inner join would drop exactly those rows. A linked report whose target path comes back empty is what the page reports as broken. That covers both shapes a broken link takes: when the target is deleted through the report server, the server sets the linked report’s LinkSourceID to NULL, and when a row is removed some other way, LinkSourceID still names an item that is gone.
Hidden comes from Catalog.Hidden, and “has permissions of its own” from Catalog.PolicyRoot.
The batch runs at READ UNCOMMITTED, so reading the catalog does not take shared locks that block the report server writing to it.
Messages you may see
Nothing has been published to this report server. The catalog holds nothing but its root folder. That is what a report server looks like the day it is installed, and also what one looks like after a restore that brought the database and not the content.
The report server query did not finish in time. The query waits up to two minutes. Press F5 to try again.
Related reports
- SSRS Data Sources – what the items here connect to
- SSRS Never Run – which of these items nobody opens
- SSRS Permissions – who can see the items that break inheritance
- SSRS What Fills This Database – where the rest of the database’s space is
- SSRS Report Parameters – what each report asks for
- SSRS Overview – the report server database’s overview panels
Frequently asked questions
The catalog total is small but the ReportServer database is large. Why? This page measures catalog content: report definitions, resources and the other published items. A report server’s size is usually in the execution log, snapshots and session data instead. See SSRS What Fills This Database for those.
I chose “Go to its parameters” on one report and the page lists every report. Is that right? Yes. The “go to” items open the related page for the whole report server with the chosen item’s rows already selected and scrolled into view, rather than filtering the page down to that item. A report with no parameters has nothing to select, so the page opens with no row selected.
Why does the inventory show items I cannot see in the portal? The page reads the catalog tables with the login you connected with in Database Health Monitor, so it lists every item on the report server, hidden ones included. The portal shows each person only what their role assignments allow.