Extract SSRS RDL files from Reporting database
I have a SSRS
reporting data backup which I have restored on my local machine.
I used a query which is returning the RDL
raw XML
from catalog table, but I found that server has more than 10 reports which even I am unable to view in production database.
My question is that where do I find RDL
file, whereas Reporting Server is showing 72 RDL
while catalog table in reporting database is showing only 10.
sql-server reporting-services ssrs-2008
add a comment |
I have a SSRS
reporting data backup which I have restored on my local machine.
I used a query which is returning the RDL
raw XML
from catalog table, but I found that server has more than 10 reports which even I am unable to view in production database.
My question is that where do I find RDL
file, whereas Reporting Server is showing 72 RDL
while catalog table in reporting database is showing only 10.
sql-server reporting-services ssrs-2008
2
Can you not just grab the RDLs straight from the SSRS Server?
– Alan Schofield
Nov 17 '18 at 0:03
Are you sure you not selecting usingTOP 10
? Folders are also stored in the Catalog table, so there will be more entries than reports. However if the numbers still don't match I think you must have a different database than the report server. As you appear to have access to the report server, why not just download the definitions directly as @AlanSchofield has already mentioned?
– Dale Burrell
Nov 18 '18 at 20:47
@AlanSchofield I wish I could have but due to security reasons I am having limited access.
– Rahul Neekhra
Nov 19 '18 at 5:24
add a comment |
I have a SSRS
reporting data backup which I have restored on my local machine.
I used a query which is returning the RDL
raw XML
from catalog table, but I found that server has more than 10 reports which even I am unable to view in production database.
My question is that where do I find RDL
file, whereas Reporting Server is showing 72 RDL
while catalog table in reporting database is showing only 10.
sql-server reporting-services ssrs-2008
I have a SSRS
reporting data backup which I have restored on my local machine.
I used a query which is returning the RDL
raw XML
from catalog table, but I found that server has more than 10 reports which even I am unable to view in production database.
My question is that where do I find RDL
file, whereas Reporting Server is showing 72 RDL
while catalog table in reporting database is showing only 10.
sql-server reporting-services ssrs-2008
sql-server reporting-services ssrs-2008
edited Nov 19 '18 at 10:01
aduguid
2,13661031
2,13661031
asked Nov 16 '18 at 19:01
Rahul Neekhra
6021627
6021627
2
Can you not just grab the RDLs straight from the SSRS Server?
– Alan Schofield
Nov 17 '18 at 0:03
Are you sure you not selecting usingTOP 10
? Folders are also stored in the Catalog table, so there will be more entries than reports. However if the numbers still don't match I think you must have a different database than the report server. As you appear to have access to the report server, why not just download the definitions directly as @AlanSchofield has already mentioned?
– Dale Burrell
Nov 18 '18 at 20:47
@AlanSchofield I wish I could have but due to security reasons I am having limited access.
– Rahul Neekhra
Nov 19 '18 at 5:24
add a comment |
2
Can you not just grab the RDLs straight from the SSRS Server?
– Alan Schofield
Nov 17 '18 at 0:03
Are you sure you not selecting usingTOP 10
? Folders are also stored in the Catalog table, so there will be more entries than reports. However if the numbers still don't match I think you must have a different database than the report server. As you appear to have access to the report server, why not just download the definitions directly as @AlanSchofield has already mentioned?
– Dale Burrell
Nov 18 '18 at 20:47
@AlanSchofield I wish I could have but due to security reasons I am having limited access.
– Rahul Neekhra
Nov 19 '18 at 5:24
2
2
Can you not just grab the RDLs straight from the SSRS Server?
– Alan Schofield
Nov 17 '18 at 0:03
Can you not just grab the RDLs straight from the SSRS Server?
– Alan Schofield
Nov 17 '18 at 0:03
Are you sure you not selecting using
TOP 10
? Folders are also stored in the Catalog table, so there will be more entries than reports. However if the numbers still don't match I think you must have a different database than the report server. As you appear to have access to the report server, why not just download the definitions directly as @AlanSchofield has already mentioned?– Dale Burrell
Nov 18 '18 at 20:47
Are you sure you not selecting using
TOP 10
? Folders are also stored in the Catalog table, so there will be more entries than reports. However if the numbers still don't match I think you must have a different database than the report server. As you appear to have access to the report server, why not just download the definitions directly as @AlanSchofield has already mentioned?– Dale Burrell
Nov 18 '18 at 20:47
@AlanSchofield I wish I could have but due to security reasons I am having limited access.
– Rahul Neekhra
Nov 19 '18 at 5:24
@AlanSchofield I wish I could have but due to security reasons I am having limited access.
– Rahul Neekhra
Nov 19 '18 at 5:24
add a comment |
1 Answer
1
active
oldest
votes
You can run a backup of all your deployed reports using the following script.
- Remote to the report server using the following command line
%systemroot%/system32/mstsc.exe
- Then save the following procedure as a .rss file and run it with the parameter
parentFolder=""
as a zero string to save the entire folder structure with all the reports.
Command Line:
rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder=""
Report Backup Procedure:
Public Sub Main()
'--------------------------------------------------------------------------------------------------------------------
' Purpose: Script to backup reports from a folder on ReportServer
' Save file as .rss extension and run using rs.exe from command line.
' Reference: http://bhushan.extreme-advice.com/back-up-of-ssrs-reports-using-rs-utility/
' https://docs.microsoft.com/en-us/sql/reporting-services/tools/rs-exe-utility-ssrs?view=sql-server-2017
' Example: rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder="/IndividualReportFolderNameHere"
' rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder=""
'--------------------------------------------------------------------------------------------------------------------
Try
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim items As CatalogItem() = Nothing
If String.IsNullOrEmpty(parentFolder) Then
items = rs.ListChildren("/", True)
Else
items = rs.ListChildren(parentFolder, False)
End If
Console.WriteLine()
Console.WriteLine("...Backup Started...")
For Each item As CatalogItem In items
If item.TypeName = "Report" Then
Console.WriteLine(item.Path)
Dim reportPath As String = item.Path
parentFolder = Path.GetDirectoryName(item.Path) ' comment out this line to save the reports in one folder
Dim reportDefinition As Byte() = rs.GetItemDefinition(item.Path)
Dim rdlReport As New System.Xml.XmlDocument
Dim Stream As New MemoryStream(reportDefinition)
Dim backupPath As String = Path.Combine(backupFolder, Date.Now().ToString("yyyy.MM.dd") + "" + parentFolder)
If (Not System.IO.Directory.Exists(backupPath)) Then
System.IO.Directory.CreateDirectory(backupPath)
End If
rdlReport.Load(Stream)
rdlReport.Save(Path.Combine(backupPath, item.Name + ".rdl"))
Console.WriteLine(item.Name + ".rdl")
End If
Next
Console.WriteLine("...Backup Completed...")
Console.WriteLine()
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53343897%2fextract-ssrs-rdl-files-from-reporting-database%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can run a backup of all your deployed reports using the following script.
- Remote to the report server using the following command line
%systemroot%/system32/mstsc.exe
- Then save the following procedure as a .rss file and run it with the parameter
parentFolder=""
as a zero string to save the entire folder structure with all the reports.
Command Line:
rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder=""
Report Backup Procedure:
Public Sub Main()
'--------------------------------------------------------------------------------------------------------------------
' Purpose: Script to backup reports from a folder on ReportServer
' Save file as .rss extension and run using rs.exe from command line.
' Reference: http://bhushan.extreme-advice.com/back-up-of-ssrs-reports-using-rs-utility/
' https://docs.microsoft.com/en-us/sql/reporting-services/tools/rs-exe-utility-ssrs?view=sql-server-2017
' Example: rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder="/IndividualReportFolderNameHere"
' rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder=""
'--------------------------------------------------------------------------------------------------------------------
Try
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim items As CatalogItem() = Nothing
If String.IsNullOrEmpty(parentFolder) Then
items = rs.ListChildren("/", True)
Else
items = rs.ListChildren(parentFolder, False)
End If
Console.WriteLine()
Console.WriteLine("...Backup Started...")
For Each item As CatalogItem In items
If item.TypeName = "Report" Then
Console.WriteLine(item.Path)
Dim reportPath As String = item.Path
parentFolder = Path.GetDirectoryName(item.Path) ' comment out this line to save the reports in one folder
Dim reportDefinition As Byte() = rs.GetItemDefinition(item.Path)
Dim rdlReport As New System.Xml.XmlDocument
Dim Stream As New MemoryStream(reportDefinition)
Dim backupPath As String = Path.Combine(backupFolder, Date.Now().ToString("yyyy.MM.dd") + "" + parentFolder)
If (Not System.IO.Directory.Exists(backupPath)) Then
System.IO.Directory.CreateDirectory(backupPath)
End If
rdlReport.Load(Stream)
rdlReport.Save(Path.Combine(backupPath, item.Name + ".rdl"))
Console.WriteLine(item.Name + ".rdl")
End If
Next
Console.WriteLine("...Backup Completed...")
Console.WriteLine()
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
add a comment |
You can run a backup of all your deployed reports using the following script.
- Remote to the report server using the following command line
%systemroot%/system32/mstsc.exe
- Then save the following procedure as a .rss file and run it with the parameter
parentFolder=""
as a zero string to save the entire folder structure with all the reports.
Command Line:
rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder=""
Report Backup Procedure:
Public Sub Main()
'--------------------------------------------------------------------------------------------------------------------
' Purpose: Script to backup reports from a folder on ReportServer
' Save file as .rss extension and run using rs.exe from command line.
' Reference: http://bhushan.extreme-advice.com/back-up-of-ssrs-reports-using-rs-utility/
' https://docs.microsoft.com/en-us/sql/reporting-services/tools/rs-exe-utility-ssrs?view=sql-server-2017
' Example: rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder="/IndividualReportFolderNameHere"
' rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder=""
'--------------------------------------------------------------------------------------------------------------------
Try
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim items As CatalogItem() = Nothing
If String.IsNullOrEmpty(parentFolder) Then
items = rs.ListChildren("/", True)
Else
items = rs.ListChildren(parentFolder, False)
End If
Console.WriteLine()
Console.WriteLine("...Backup Started...")
For Each item As CatalogItem In items
If item.TypeName = "Report" Then
Console.WriteLine(item.Path)
Dim reportPath As String = item.Path
parentFolder = Path.GetDirectoryName(item.Path) ' comment out this line to save the reports in one folder
Dim reportDefinition As Byte() = rs.GetItemDefinition(item.Path)
Dim rdlReport As New System.Xml.XmlDocument
Dim Stream As New MemoryStream(reportDefinition)
Dim backupPath As String = Path.Combine(backupFolder, Date.Now().ToString("yyyy.MM.dd") + "" + parentFolder)
If (Not System.IO.Directory.Exists(backupPath)) Then
System.IO.Directory.CreateDirectory(backupPath)
End If
rdlReport.Load(Stream)
rdlReport.Save(Path.Combine(backupPath, item.Name + ".rdl"))
Console.WriteLine(item.Name + ".rdl")
End If
Next
Console.WriteLine("...Backup Completed...")
Console.WriteLine()
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
add a comment |
You can run a backup of all your deployed reports using the following script.
- Remote to the report server using the following command line
%systemroot%/system32/mstsc.exe
- Then save the following procedure as a .rss file and run it with the parameter
parentFolder=""
as a zero string to save the entire folder structure with all the reports.
Command Line:
rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder=""
Report Backup Procedure:
Public Sub Main()
'--------------------------------------------------------------------------------------------------------------------
' Purpose: Script to backup reports from a folder on ReportServer
' Save file as .rss extension and run using rs.exe from command line.
' Reference: http://bhushan.extreme-advice.com/back-up-of-ssrs-reports-using-rs-utility/
' https://docs.microsoft.com/en-us/sql/reporting-services/tools/rs-exe-utility-ssrs?view=sql-server-2017
' Example: rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder="/IndividualReportFolderNameHere"
' rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder=""
'--------------------------------------------------------------------------------------------------------------------
Try
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim items As CatalogItem() = Nothing
If String.IsNullOrEmpty(parentFolder) Then
items = rs.ListChildren("/", True)
Else
items = rs.ListChildren(parentFolder, False)
End If
Console.WriteLine()
Console.WriteLine("...Backup Started...")
For Each item As CatalogItem In items
If item.TypeName = "Report" Then
Console.WriteLine(item.Path)
Dim reportPath As String = item.Path
parentFolder = Path.GetDirectoryName(item.Path) ' comment out this line to save the reports in one folder
Dim reportDefinition As Byte() = rs.GetItemDefinition(item.Path)
Dim rdlReport As New System.Xml.XmlDocument
Dim Stream As New MemoryStream(reportDefinition)
Dim backupPath As String = Path.Combine(backupFolder, Date.Now().ToString("yyyy.MM.dd") + "" + parentFolder)
If (Not System.IO.Directory.Exists(backupPath)) Then
System.IO.Directory.CreateDirectory(backupPath)
End If
rdlReport.Load(Stream)
rdlReport.Save(Path.Combine(backupPath, item.Name + ".rdl"))
Console.WriteLine(item.Name + ".rdl")
End If
Next
Console.WriteLine("...Backup Completed...")
Console.WriteLine()
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
You can run a backup of all your deployed reports using the following script.
- Remote to the report server using the following command line
%systemroot%/system32/mstsc.exe
- Then save the following procedure as a .rss file and run it with the parameter
parentFolder=""
as a zero string to save the entire folder structure with all the reports.
Command Line:
rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder=""
Report Backup Procedure:
Public Sub Main()
'--------------------------------------------------------------------------------------------------------------------
' Purpose: Script to backup reports from a folder on ReportServer
' Save file as .rss extension and run using rs.exe from command line.
' Reference: http://bhushan.extreme-advice.com/back-up-of-ssrs-reports-using-rs-utility/
' https://docs.microsoft.com/en-us/sql/reporting-services/tools/rs-exe-utility-ssrs?view=sql-server-2017
' Example: rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder="/IndividualReportFolderNameHere"
' rs -s http://localhost/reportserver -i D:ScriptsBackup_Reports.rss -e Mgmt2010 -v backupFolder="D:ScriptsBackupReports" -v parentFolder=""
'--------------------------------------------------------------------------------------------------------------------
Try
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim items As CatalogItem() = Nothing
If String.IsNullOrEmpty(parentFolder) Then
items = rs.ListChildren("/", True)
Else
items = rs.ListChildren(parentFolder, False)
End If
Console.WriteLine()
Console.WriteLine("...Backup Started...")
For Each item As CatalogItem In items
If item.TypeName = "Report" Then
Console.WriteLine(item.Path)
Dim reportPath As String = item.Path
parentFolder = Path.GetDirectoryName(item.Path) ' comment out this line to save the reports in one folder
Dim reportDefinition As Byte() = rs.GetItemDefinition(item.Path)
Dim rdlReport As New System.Xml.XmlDocument
Dim Stream As New MemoryStream(reportDefinition)
Dim backupPath As String = Path.Combine(backupFolder, Date.Now().ToString("yyyy.MM.dd") + "" + parentFolder)
If (Not System.IO.Directory.Exists(backupPath)) Then
System.IO.Directory.CreateDirectory(backupPath)
End If
rdlReport.Load(Stream)
rdlReport.Save(Path.Combine(backupPath, item.Name + ".rdl"))
Console.WriteLine(item.Name + ".rdl")
End If
Next
Console.WriteLine("...Backup Completed...")
Console.WriteLine()
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
edited Nov 18 '18 at 22:20
answered Nov 18 '18 at 22:08
aduguid
2,13661031
2,13661031
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53343897%2fextract-ssrs-rdl-files-from-reporting-database%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
Can you not just grab the RDLs straight from the SSRS Server?
– Alan Schofield
Nov 17 '18 at 0:03
Are you sure you not selecting using
TOP 10
? Folders are also stored in the Catalog table, so there will be more entries than reports. However if the numbers still don't match I think you must have a different database than the report server. As you appear to have access to the report server, why not just download the definitions directly as @AlanSchofield has already mentioned?– Dale Burrell
Nov 18 '18 at 20:47
@AlanSchofield I wish I could have but due to security reasons I am having limited access.
– Rahul Neekhra
Nov 19 '18 at 5:24