J'ai créé des rapports dans Visual Studio 2015 avec toutes les dernières mises à jour. Cependant, lorsque j'essaie de déployer les rapports, je reçois le message suivant:
La définition de ce rapport n'est pas valide ni prise en charge par cette version de Reporting Services.
11:40:28 Erreur
La définition de rapport peut avoir été créée avec une version ultérieure de Reporting Services ou contenir un contenu qui n'est pas
11:40:28 Erreur
bien formé ou non valide selon les schémas de Reporting Services. Détails: la définition du rapport a une cible non valide.
11:40:28 Erreur
namespace ' http://schemas.Microsoft.com/sqlserver/reporting/2016/01/reportdefinition ' qui ne peut pas être mis à niveau.
Les premières lignes du fichier .rdl sont configurées comme suit:
<?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">
Puis-je changer la définition du schéma? Si oui, à quoi? J'ai essayé de changer simplement 2016 à 2014 ou 2012, mais ni l'un ni l'autre n'a fonctionné.
Y a-t-il un endroit où je peux voir les définitions valides?
En fait, j'ai rencontré un problème similaire dans lequel une modification que je devais apporter entraînait l'erreur "Erreur non documentée/Structure RDL non valide" en 2016. J'ai donc modifié le fichier RDL afin de pouvoir l'ouvrir dans une version antérieure et apporter mes modifications. Pas trop difficile, mais vous devez apporter quelques modifications au tag.
Pour les nouveaux rapports, vous devriez probablement utiliser une version plus ancienne, mais pour les rapports existants, vous pouvez le faire: (Je suis revenu à 2008)
En fait, a écrit du code super-hackish pour le faire dans le cadre d'un article de blog, mais l'édition manuelle est assez simple.
Les paramètres ci-dessous doivent être définis sur votre version spécifique de SSRS, puis sélectionnez le fichier RDL dans le répertoire\bin.
Ou, après avoir mis à jour TargetServerVersion, utilisez simplement right click | deploy
à partir du rdl.
La réponse acceptée est nettement plus difficile/sujette aux erreurs/ne fonctionnera probablement pas avec plusieurs versions de ssrs et doit être appliquée chaque fois que vous modifiez le rdl.
J'ai rencontré le même problème et voici comment je l'ai résolu,
Le format de vos rapports source et votre espace de noms seront mis à jour vers la dernière version. Mais les rapports de dossiers bin seront créés pour être compatibles avec la version du serveur de rapports ciblée.
J'ai récemment rencontré ce problème aussi. J'ai constaté qu'il me suffisait de modifier deux éléments du fichier .rdl en question.
Changer de:
Report xmlns = "http://schemas.Microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns: rd = "http://schemas.Microsoft.com/SQLServer/reporting/reportdesigner"
À:
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 "
Contrairement à d'autres réponses, j'avais besoin de 2010 au lieu de 2008. Je vérifierais un fichier .rdl que vous avez déjà déployé.
Remarque: Si j'ai supprimé le bloc ReportSections, il ne fonctionnait pas comme d'autres l'ont noté.
J'ai automatisé cette tâche.
créez un formulaire avec une zone de texte nommée "TextBoxFile" et un bouton . Dans le code du bouton de clic:
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")
J'ai eu le même problème lors du passage à VS2017 et j'ai installé Report Designer version 14.2.
Pour moi, il ne reste que 3 étapes pour résoudre le problème.
1: Définissez Changer la xmlns
en " http://schemas.Microsoft.com/sqlserver/reporting/2008/01/reportdefinition "
2: Supprimer ReportSections
"et" ReportSection
"(balises uniquement).
3: Supprimez la section rapport ReportParametersLayout
.
La seule chose que vous devez mémoriser est de pointer XMLNS vers 2008/01.
Le message d'erreur contient deux autres étapes après le passage à 2008/01 et l'exécution du rapport.