web-dev-qa-db-fra.com

La définition de rapport a un espace de nom cible non valide rsInvalidReportDefinition

J'ai créé un ReportProject avec les outils de données Visual Studio 2015. Lorsque je crée un fichier report.rdl à l'aide de l'assistant de création de rapports, le fichier rdl a un schéma pour 2016. Mon serveur de rapports est de la version 12.0.4213.0. 

Comment créer un rapport.rdl compatible avec mon serveur de rapports? J'ai essayé de modifier TargetServerVersion en cliquant avec le bouton droit de la souris sur le projet -> Propriétés et en modifiant le serveur cible en "SQL Server 2008 R2, 2012 ou 2014". Mais cela ne fonctionne pas non plus.

14
Anirudhan J

Édition: la version spécifique du rapport que vous définissez comme propriété TargetServerVersion est créée dans le dossier BIN (\ debug ou où que vous vous construisiez) à condition que vous n'utilisiez aucune fonctionnalité 2016.

J'essaie de trouver la même réponse. Vous penseriez simplement que vous définissiez la TargetServerVersion de la solution comme vous le feriez pour qu'elle utilise la bonne définition de rapport (ou optionnellement, elle pourrait vous donner la possibilité d'ajouter un élément de rapport pré-2016)

Jusque-là, si vous cliquez avec le bouton droit sur le fichier .rdl et "Afficher le code", vous pouvez modifier les lignes suivantes pour le faire fonctionner dans SQL 2014 - effectuez simplement une sauvegarde de votre fichier .rdl original au cas où vous feriez une erreur:

1) Remplacez la ligne de rapport xmlns par la suivante:

<Report xmlns="http://schemas.Microsoft.com/sqlserver/reporting/2008/01/reportdefinition" xmlns:rd="http://schemas.Microsoft.com/SQLServer/reporting/reportdesigner">

2) Supprimez les lignes ReportSections et ReportSection, en gardant la balise de corps de structure d'arborescence enfant, etc. en dessous). Alors supprimez ces:

  <ReportSections>
    <ReportSection>

et ceux-ci...

    </ReportSection>
  </ReportSections>

3) Supprimez toute la section ReportParametersLayout. Donc, par exemple, supprimez ceci:

  <ReportParametersLayout>
    <GridLayoutDefinition>
      <NumberOfColumns>4</NumberOfColumns>
      <NumberOfRows>2</NumberOfRows>
    </GridLayoutDefinition>
  </ReportParametersLayout>

Appuyez sur Enregistrer, revenez dans la conception et exécutez le rapport. Si vous n'avez pas modifié la conception, cela fonctionnera sous SQL2014. Dès que vous modifiez des champs, le schéma 2016 est rétabli. 

Si quelqu'un voit un moyen de résoudre ce problème, faites-le nous savoir. Merci!

47
user2044384

Vous pouvez obtenir des rapports dans différents formats de version à partir de Visual Studio en procédant comme suit:

  1. Dans les pages de propriétés du projet, définissez la variable TargetServerVersion au format souhaité (dans ce cas, SQL Server 2008 R2, 2012 or 2014).
  2. Construire le projet
  3. Recherchez les rdl au format souhaité dans le dossier de sortie de la construction (spécifié dans les pages de propriétés du projet également: Build => OutputPath)
4
Philip Bijker

J'ai écrit un script PowerShell simple qui suit les idées de la réponse acceptée.

$file = (Get-Content "InputFileNameHere.rdl") 

# Unwraps the Body and the Page element. 
# Simple string replacement
$file = $file -replace '<ReportSections>',""
$file = $file -replace '<ReportSection>',""
$file = $file -replace '</ReportSection>',""
$file = $file -replace '</ReportSections>',""

# Parse the XML doc
$xml = [xml]$file;

# Set the XML namespace
$xml.Report.xmlns = "http://schemas.Microsoft.com/sqlserver/reporting/2008/01/reportdefinition";

# Delete ReportParametersLayout node    
$xml.Report.RemoveChild($xml.Report.ReportParametersLayout);

# Save the file
Set-Content -Value $xml.OuterXml -Path "OutputFilenameHere.rdl"

Modifiez la première ligne pour qu'elle corresponde à votre fichier d'entrée et à la dernière ligne, enregistrez-la sous le nom "quelquechose.ps", exécutez-la et téléchargez le nouveau fichier.

2
LSuhadolnik

Essayez cette étape que j’ai trouvée sur ce lien et qui a fonctionné pour moi: Erreur lors du téléchargement d’un rapport

  1. Utilisation de SSDT en 2016, définissez votre version SQL cible sur SQL Server 2008 R2, 2012 ou 2014
  2. Nettoyer la solution
  3. Reconstruire la solution
  4. Copiez le contenu de votre dossier Bin\debug et remplacez le contenu du dossier principal par celui-ci (veillez à disposer d'une sauvegarde).
  5. SSRS 2010 devrait rendre votre projet
1
Oluwabori Olaleye

Remplacez la deuxième ligne du code de rapport contenant 2016 , en dessous: 

<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">

Localisez ensuite la section ReportParametersLayout et supprimez-la. Appuyez sur moins pour afficher une ligne et faites un clic droit et couper.

Les quatre rapports ci-dessus fixes convertis de Crystal à la version 16 , alors que j'aurais dû sélectionner la version 10 .

0
Michael Conroy