SSRS report definition is newer than Server

后端 未结 8 1949
一个人的身影
一个人的身影 2020-11-27 04:29

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

相关标签:
8条回答
  • 2020-11-27 04:35

    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.

    0 讨论(0)
  • 2020-11-27 04:41

    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.

    0 讨论(0)
  • 2020-11-27 04:41

    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

    0 讨论(0)
  • 2020-11-27 04:43

    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")
    
    0 讨论(0)
  • 2020-11-27 04:47

    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)

    • Change the Report tag:
      • Remove MustUnderstand="df"
      • Change the xmlns value to "http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"
      • Delete the xmlns:df attribute.
    • Delete the entire "ReportParametersLayout" block.
    • Delete the "df" tag and its content.
    • Delete the "ReportSections" and "ReportSection" opening and closing tags (not the content).

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

    0 讨论(0)
  • 2020-11-27 04:48

    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.

    0 讨论(0)
提交回复
热议问题