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.
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!
Vous pouvez obtenir des rapports dans différents formats de version à partir de Visual Studio en procédant comme suit:
TargetServerVersion
au format souhaité (dans ce cas, SQL Server 2008 R2, 2012 or 2014
).Build => OutputPath
)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.
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
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 .