From 248796493e9fc172ec61512b197df02d55d8a452 Mon Sep 17 00:00:00 2001 From: Todor Arabadzhiev Date: Wed, 15 Oct 2025 18:56:43 +0300 Subject: [PATCH 1/2] Create optimize-report-server-mssql-server-storage.md --- ...mize-report-server-mssql-server-storage.md | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 knowledge-base/optimize-report-server-mssql-server-storage.md diff --git a/knowledge-base/optimize-report-server-mssql-server-storage.md b/knowledge-base/optimize-report-server-mssql-server-storage.md new file mode 100644 index 00000000..2479212b --- /dev/null +++ b/knowledge-base/optimize-report-server-mssql-server-storage.md @@ -0,0 +1,104 @@ +--- +title: Optimize MsSqlServer Storage +description: "Learn how to investigate what assets take most space in your MSSQL Server Storage and how to delete the unnecessary ones." +type: troubleshoot +page_title: Investigate and Optimize Report Server MsSqlServer Storage +meta_title: Investigate and Optimize Report Server MsSqlServer Storage +slug: optimize-report-server-mssql-server-storage +tags: report-server, mssql, server, storage, troubleshoot +res_type: kb +ticketid: 1699496 +--- + +## Environment + + + + + + + + +
ProductReport Server
+ +## Problem + +The MSSQL Server Database that I use as Storage for my Report Server became very large. Apart from taking a lot of space on the server machine, this seems to decrease significantly the performance of my Report Server. + +## Description + +The [Report Server Storage]({%slug storage-settings%}) contains two major parts: + +* The __TRS__ part, short from 'Telerik Report Server'. It stores the actual Report Server like _report definitions_; _users_; _data connections_, etc. +* The __{GUID}\{Telerik Reporting Version}__, for example __d4b7948f\19.2.25.1001__ part. This is the [embedded Telerik Reporting REST Service Storage](https://docs.telerik.com/reporting/embedding-reports/host-the-report-engine-remotely/rest-service-storage/overview) assets that keep the state of the clients/viewers that connect to the Report Server and use it as service for delivering report documents. + +The latter keeps temporary assets that are needed only when communicating with the corresponding client/viewer. When the client expires, for example, when a user of a Report Viewer closes the browser tab with the viewer, the corresponding assets expire and the REST Service schedule them for removal - see the blog [Telerik Reporting REST Service Storage Revealed](https://www.telerik.com/blogs/telerik-reporting-rest-service-storage-revealed) for details. + +In some scenarios the REST Service Storage may not be cleaned, with its expired assets piling up, taking unnecessary space. The most popular scenarios are: + +* Stop/Restart of the Report Server. In such cases, usually remain the expired assets that are not yet deleted by the REST Service. +* Upgrade of the Report Server. In this scenario, the part of the storage responsible for the REST Service assets obtains a new nickname corresponding to the new Reporting version. + +## Troubleshooting + +When using MSSQL Database Server Storage, you may use the following SQL script to figure out the amount of space taken by the different Report Server assets. You may execute it in the MSSQL Management Studio against your database used as Report Server Storage: + +````SQL +select 'AppLock' as TableName, 'RS' as Application, count(*) as RowsCount +from tr_AppLock where left(Id, 3) = 'TRS' +union all +select 'AppLock' as TableName, 'Cache' as Application, count(*) as RowsCount +from tr_AppLock where left(Id, 3) <> 'TRS' +union +select 'tr_Object', 'RS' as Application, count(*) +from tr_Object where left(Id, 3) = 'TRS' +union all +select 'tr_Object', 'Cache' as Application, count(*) +from tr_Object where left(Id, 3) <> 'TRS' +union +select 'tr_Set', 'RS' as Application, count(*) +from tr_Set where left(Id, 3) = 'TRS' +union all +select 'tr_Set', 'Cache' as Application, count(*) +from tr_Set where left(Id, 3) <> 'TRS' +union +select 'tr_String', 'RS' as Application, count(*) +from tr_String where left(Id, 3) = 'TRS' +union all +select 'tr_String', 'Cache' as Application, count(*) +from tr_String where left(Id, 3) <> 'TRS' +order by 1,2 +```` + +The result returns the number of the _TRS_ (required) assets as 'RS', and the number of Reporting REST Service (removable) assets as 'Cache'. + +## Solution + +* Track down the {GUID} and {Telerik Reporting Version} and use code like the following to delete the temporary REST Service assets. For example, if we use the above values 'd4b7948f' for the GUID and '19.2.25.1001' for the Reporting version, here is sample SQL code: + + ````SQL +delete from tr_object where left([Id], 21) = 'd4b7948f\19.2.25.1001' + delete from tr_string where left([Id], 21) = 'd4b7948f\19.2.25.1001' + delete from tr_set where left([Id], 21) = 'd4b7948f\19.2.25.1001' +```` + + > There may be left overs from previous Report Server versions. Ensure you delete also the old assets with nicknames corresponding to the old Reporting version and probably a different GUID part. + +* Upon Upgrade of the Report Server use the following SQL script to remove the REST Service tables that don't need to be migrated: + +````SQL +truncate table tr_AppLock; +truncate table tr_Object; +truncate table tr_Set; +truncate table tr_String; +```` + +* When Upgrading the Report Server you may also consider [Migrating its Storage with the tool we provide]({%slug migration-tool%}). The tool migrates only assets from the _TRS_ part of the storage and ignores the REST Service part. + +## See Also + +* [Welcome to TelerikĀ® Report Server!]({%slug introduction%}) +* [Report Server Storage]({%slug storage-settings%}) +* [Storage Migration Tool]({%slug migration-tool%}) +* [embedded Telerik Reporting REST Service Storage](https://docs.telerik.com/reporting/embedding-reports/host-the-report-engine-remotely/rest-service-storage/overview) +* [Telerik Reporting REST Service Storage Revealed](https://www.telerik.com/blogs/telerik-reporting-rest-service-storage-revealed) From 4be6dfdd85a7f52a740c68950cf15548b758a4ce Mon Sep 17 00:00:00 2001 From: Todor Arabadzhiev Date: Wed, 15 Oct 2025 19:05:24 +0300 Subject: [PATCH 2/2] Update optimize-report-server-mssql-server-storage.md --- ...mize-report-server-mssql-server-storage.md | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/knowledge-base/optimize-report-server-mssql-server-storage.md b/knowledge-base/optimize-report-server-mssql-server-storage.md index 2479212b..759a9693 100644 --- a/knowledge-base/optimize-report-server-mssql-server-storage.md +++ b/knowledge-base/optimize-report-server-mssql-server-storage.md @@ -23,21 +23,21 @@ ticketid: 1699496 ## Problem -The MSSQL Server Database that I use as Storage for my Report Server became very large. Apart from taking a lot of space on the server machine, this seems to decrease significantly the performance of my Report Server. +The MSSQL Server Database that I use as Storage for my Report Server became very large. Apart from taking a lot of space on the server machine, this seems to significantly decrease the performance of my Report Server. ## Description The [Report Server Storage]({%slug storage-settings%}) contains two major parts: -* The __TRS__ part, short from 'Telerik Report Server'. It stores the actual Report Server like _report definitions_; _users_; _data connections_, etc. -* The __{GUID}\{Telerik Reporting Version}__, for example __d4b7948f\19.2.25.1001__ part. This is the [embedded Telerik Reporting REST Service Storage](https://docs.telerik.com/reporting/embedding-reports/host-the-report-engine-remotely/rest-service-storage/overview) assets that keep the state of the clients/viewers that connect to the Report Server and use it as service for delivering report documents. +* The __TRS__ part, short for 'Telerik Report Server'. It stores the actual Report Server assets like _report definitions_; _users_; _data connections_, etc. +* The __{GUID}\{Telerik Reporting Version}__, for example __d4b7948f\19.2.25.1001__ part. This is the [embedded Telerik Reporting REST Service Storage](https://docs.telerik.com/reporting/embedding-reports/host-the-report-engine-remotely/rest-service-storage/overview) assets that keep the state of the clients/viewers that connect to the Report Server and use it as a service for delivering report documents. -The latter keeps temporary assets that are needed only when communicating with the corresponding client/viewer. When the client expires, for example, when a user of a Report Viewer closes the browser tab with the viewer, the corresponding assets expire and the REST Service schedule them for removal - see the blog [Telerik Reporting REST Service Storage Revealed](https://www.telerik.com/blogs/telerik-reporting-rest-service-storage-revealed) for details. +The REST Service part keeps temporary assets that are needed only when communicating with the corresponding client/viewer. When the client expires, for example, when a user of a Report Viewer closes the browser tab with the viewer, the corresponding assets expire and the REST Service schedules them for removal - see the blog [Telerik Reporting REST Service Storage Revealed](https://www.telerik.com/blogs/telerik-reporting-rest-service-storage-revealed) for details. -In some scenarios the REST Service Storage may not be cleaned, with its expired assets piling up, taking unnecessary space. The most popular scenarios are: +In some scenarios, the REST Service Storage may not be cleaned, with its expired assets piling up, taking up unnecessary space. The most popular scenarios are: -* Stop/Restart of the Report Server. In such cases, usually remain the expired assets that are not yet deleted by the REST Service. -* Upgrade of the Report Server. In this scenario, the part of the storage responsible for the REST Service assets obtains a new nickname corresponding to the new Reporting version. +* Stop/Restart of the Report Server. In such cases, the REST Service may not have yet deleted the expired assets. +* Upgrade of the Report Server. In this scenario, the part of the storage responsible for the REST Service assets obtains a new identifier corresponding to the new Reporting version. The old part remains, although unnecessary. ## Troubleshooting @@ -70,11 +70,11 @@ from tr_String where left(Id, 3) <> 'TRS' order by 1,2 ```` -The result returns the number of the _TRS_ (required) assets as 'RS', and the number of Reporting REST Service (removable) assets as 'Cache'. +The result returns the number of the _TRS_ (required) assets as 'RS', and the number of Reporting REST Service (unnecessary) assets as 'Cache'. ## Solution -* Track down the {GUID} and {Telerik Reporting Version} and use code like the following to delete the temporary REST Service assets. For example, if we use the above values 'd4b7948f' for the GUID and '19.2.25.1001' for the Reporting version, here is sample SQL code: +* Track down the {GUID} and {Telerik Reporting Version} and use code like the following to delete the temporary REST Service assets. For example, if we use the above values 'd4b7948f' for the GUID and '19.2.25.1001' for the Reporting version, here is a sample SQL code: ````SQL delete from tr_object where left([Id], 21) = 'd4b7948f\19.2.25.1001' @@ -82,23 +82,24 @@ delete from tr_object where left([Id], 21) = 'd4b7948f\19.2.25.1001' delete from tr_set where left([Id], 21) = 'd4b7948f\19.2.25.1001' ```` - > There may be left overs from previous Report Server versions. Ensure you delete also the old assets with nicknames corresponding to the old Reporting version and probably a different GUID part. + > There may be leftovers from previous Report Server versions. Ensure you also delete the old assets with identifiers corresponding to the old Report Server and Reporting version. -* Upon Upgrade of the Report Server use the following SQL script to remove the REST Service tables that don't need to be migrated: +* Upon upgrade of the Report Server, use the following SQL script to remove the REST Service tables that don't need to be migrated: -````SQL + ````SQL truncate table tr_AppLock; -truncate table tr_Object; -truncate table tr_Set; -truncate table tr_String; + truncate table tr_Object; + truncate table tr_Set; + truncate table tr_String; ```` -* When Upgrading the Report Server you may also consider [Migrating its Storage with the tool we provide]({%slug migration-tool%}). The tool migrates only assets from the _TRS_ part of the storage and ignores the REST Service part. + +* When upgrading the Report Server, you may also consider [Migrating its Storage with the tool we provide]({%slug migration-tool%}). The tool migrates only assets from the _TRS_ part of the storage and ignores the REST Service part. After a successful migration, you may delete the whole previous Report Server Storage. ## See Also * [Welcome to TelerikĀ® Report Server!]({%slug introduction%}) * [Report Server Storage]({%slug storage-settings%}) * [Storage Migration Tool]({%slug migration-tool%}) -* [embedded Telerik Reporting REST Service Storage](https://docs.telerik.com/reporting/embedding-reports/host-the-report-engine-remotely/rest-service-storage/overview) +* [Reporting REST Service Storage](https://docs.telerik.com/reporting/embedding-reports/host-the-report-engine-remotely/rest-service-storage/overview) * [Telerik Reporting REST Service Storage Revealed](https://www.telerik.com/blogs/telerik-reporting-rest-service-storage-revealed)