SSRS report definition is newer than Server
Asked Answered
M

10

42

I created some reports in Visual Studio 2015 with all the latest updates. However, when I try to deploy the reports I get this message:

The definition of this report is not valid or supported by this version of Reporting Services.
11:40:28 Error
The report definition may have been created with a later version of Reporting Services, or contain content that is not
11:40:28 Error
well-formed or not valid based on Reporting Services schemas. Details: The report definition has an invalid target
11:40:28 Error
namespace 'http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition' which cannot be upgraded.

The first lines of the .rdl file are set up like this:

<?xml version="1.0" encoding="utf-8"?>
<Report MustUnderstand="df" 
xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" 
xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" 
xmlns:df="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition/defaultfontfamily">

Can I change the schema definition? If so, to what? I tried just changing 2016 to 2014 or 2012, but neither worked.

Is there a place I can go to see valid definitions?

Maitland answered 11/8, 2016 at 16:48 Comment(7)
Do you have access to earlier versions of Visual Studio? Try creating a report in one of them and see what the schemas are.Annamaeannamaria
What version of deployment server are you running?Perron
The SQL report server is 2012. I only have VS 2015 installed.Maitland
Or, you can download a working report from your report server and look to see what the schemas are. Perhaps use Notepad to inspect them so VS doesn't try to convert them to new schemas.Annamaeannamaria
You cannot create things in a version higher than the ultimate server the code will run on. Install VS2012.Ronaronal
I re-wrote the report with this standard: <Report xmlns="schemas.microsoft.com/sqlserver/reporting/2008/01/…" xmlns:rd="schemas.microsoft.com/SQLServer/reporting/reportdesigner"> I can deploy from visual studio with no errors, but deploying via Octopus deploy gives me the error.Maitland
If you right-click the Project and choose Properties => there is property for Target Server Version. That might help.Idio
T
111

I actually ran into a similar problem where a change I needed to make resulted in an "Undocumented Error/Invalid RDL Structure" error in 2016, so I edited the RDL file so I could open it in an earlier version and make my changes. Not too hard, but you need to make a couple of tag edits.

For new reports you should probably just use an older version, but for existing reports you can do this: (I reverted to 2008)

Actually wrote some superhackish code to do this as part of a blog post, but the manual edit is simple enough.

Tubulate answered 11/8, 2016 at 17:56 Comment(6)
This worked like a charm. @trubs i didn't find on my report the "TargetServerVersion" as the below answer, so this answer solved my problem rather the other answer.Jotunheim
Hi @MarceloBarbosa, this worked for me too, but, i had to repeat all the steps every time I changed the report. I've added an answer with a screenshot to show where the specific settings are (to support Amila Pradeep's answer)Kaddish
Thanks for this big idea. Works fine for my report :)Erickaericksen
I'd guess that if the "TargetServerVersion" is not in the properties tab, it might be dependant upon the version of Visual Studio?Kaddish
Thanks this worked perfectly. Was able to open my VS 2015 reports back into VS 2013.Supercargo
Going from 2016 to 2008 I didn't remove any of the "df" stuff (so just the other three changes) and it still worked for me.Readymade
K
37

The settings below should be set to your sepecific version of SSRS, and then take the RDL from the \bin directory

Or, after updating the TargetServerVersion, simply use right click | deploy from the rdl.

The accepted answer is significantly more difficult/prone to error/unlikely to work across multiple versions of ssrs, and needs to be applied each time you change the rdl.

enter image description here

Kaddish answered 3/1, 2017 at 4:12 Comment(4)
Ahh... Thank you!Jotunheim
Ironically your image cannot be displayed.Seem
Bin folder...that's what I was missing.Dulcie
this is the best solution. Thanks.Delois
D
19

I had the same issue when switching to VS2017 and installed Report Designer Version 14.2.

For me only 3 steps needed to fix the issue.

1: Set Change the xmlns to "http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"

2: Remove ReportSections" and "ReportSection" (Only Tags).

3: Remove report ReportParametersLayout section.

The only thing you need to memorize is to point xmlns to 2008/01

Other 2 steps can be seen in the error message after you change to 2008/01 and try to run the report.

Discobolus answered 15/2, 2019 at 14:42 Comment(2)
Correct.. I follow this and working at VS 2019 to VS 2015Bannon
+1 for this. An additional "virtual +1" for the line: "The only thing you need to memorize is to point xmlns to [the right version]". The easier it is to remember, the more likely I'll remember it and get it right without searching SO again (but don't tell them... it's kind'a their thing - though I personally no longer get advertisements, so it takes no GOOG money from Joel Spolski's pocket :-) )Party
E
9

I recently ran into this issue as well. I found that I only needed to change two items in the .rdl file in question.

  1. Change FROM:

    Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"

    TO:

    Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:cl="http://schemas.microsoft.com/sqlserver/reporting/2010/01/componentdefinition" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition"

Unlike other responses, I needed 2010 instead of 2008. I would check an .rdl file that you have already deployed.

  1. Remove the "ReportParametersLayout" block.

Note: If I removed ReportSections block, it did not work as others have noted.

Esmeraldaesmerelda answered 18/1, 2018 at 17:26 Comment(0)
O
8

If you are having trouble in a Visual Studo 2017 C# desktop application with LocalReport (RDLC), please see this answer:

https://mcmap.net/q/391172/-rdlc-report-stop-working-after-change-visual-studio-2015-to-visual-studio-2017

Offshoot answered 7/3, 2019 at 21:4 Comment(1)
Thanks a lot @Bruno, This fixed my problem. For WinForms application just we have to install package Microsoft.ReportingServices.ReportViewerControl.WinformsGibeon
A
5

I ran in to same problem and this is how I solved it,

  1. Set the "TargetServerVersion" property on report project properties to be your old version of reporting server.
  2. Build the project.
  3. Get the report in the bin folder and deploy to the old reporting server.

Your source reports format and namespace will be updated to latest version. But bin folder reports will be build to be compatible with targeted reporting server version.

Animalism answered 29/8, 2016 at 11:43 Comment(1)
This is definitely the way to go!Hundley
B
2

The most simple and straight forward solution. I would suggest you to find Microsoft.ReportingServices.ReportViewerControl.WebForms in Manage NuGet Packages of the current project and update this dll version to latest version.

Navigate from VS menu: Tools > NuGet Package Manager > Manage NuGet Packages for Solution

Bellarmine answered 3/9, 2020 at 3:17 Comment(0)
S
1

I have automated this task.

create a form with a textbox named "TextBoxFile" and a button. In the code of the click button:

    Dim xmlDoc As New XmlDocument()
    xmlDoc.Load(TextBoxFile.Text)
    Dim root = xmlDoc.DocumentElement 

    For Each elel As XmlNode In root.ChildNodes
        Debug.WriteLine(elel.Name & " " & elel.NodeType)
    Next

    If root.Attributes()("xmlns").Value <> "http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" Then
        root.Attributes()("xmlns").Value = "http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"
    End If

    Dim nsmgr = New XmlNamespaceManager(xmlDoc.NameTable)
    nsmgr.AddNamespace("bk", "http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition")

    Dim autoRefreshElements = root.GetElementsByTagName("AutoRefresh")
    While autoRefreshElements.Count > 0
        root.RemoveChild(autoRefreshElements(0))
    End While

    Dim ReportParametersLayout = root.GetElementsByTagName("ReportParametersLayout")
    While ReportParametersLayout.Count > 0
        root.RemoveChild(ReportParametersLayout(0))
    End While

    Dim ReportSections = root.GetElementsByTagName("ReportSections")

    If ReportSections.Count > 0 Then
        ' Move content of ReportSections just below the block.
        Dim ReportSection = ReportSections(0).ChildNodes()

        ' First, copy the elements after
        Dim precedent = ReportSections(0)
        For Each child As XmlNode In ReportSection(0).ChildNodes
            Dim clone = child.Clone
            root.InsertAfter(clone, precedent)
            precedent = clone
        Next

        ' After deleting the existing block
        While ReportSections.Count > 0
            root.RemoveChild(ReportSections(0))
        End While
    End If

    xmlDoc.Save(TextBoxFile.Text) 

    MsgBox("Ok")
Sweitzer answered 27/3, 2018 at 9:4 Comment(0)
V
1

I had the same issue when switching to VS2019 and installed Report Designer Version 14.2.

For me only 3 steps needed to fix the issue.

1: Set Change the xmlns to "http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"

2: Remove ReportSections" and "ReportSection" (Only Tags).

3: Remove report ReportParametersLayout section.

The only thing you need to memorize is to point xmlns to 2008/01

Other 2 steps can be seen in the error message after you change to 2008/01 and try to run the report.

Share

Vanderhoek answered 10/7, 2023 at 13:50 Comment(0)
B
-2

Login through the local admin account and correct computer objects by deleting and creating those computer objects.

Bryner answered 19/5, 2022 at 10:48 Comment(1)
If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From ReviewMashhad

© 2022 - 2025 — McMap. All rights reserved.