it-swarm.com.de

Die Berichtsdefinition hat einen ungültigen Zielnamespace rsInvalidReportDefinition

Ich habe ein ReportProject mit Visual Studio-Datentools 2015 erstellt. Wenn ich eine report.rdl-Datei mit dem Berichtsassistenten erstellt habe, hat die rdl-Datei ein Schema für 2016. Mein Berichtsserver hat die Version 12.0.4213.0. 

Wie kann ich eine report.rdl erstellen, die mit meinem Berichtsserver kompatibel ist? Ich habe versucht, die TargetServerVersion zu ändern, indem Sie mit der rechten Maustaste auf die Projekteigenschaften klicken und die Zielserverversion in "SQL Server 2008 R2, 2012 oder 2014" ändern. Das funktioniert aber auch nicht.

14
Anirudhan J

Bearbeiten: Die bestimmte Version des Berichts, den Sie als TargetServerVersion -Eigenschaft festgelegt haben, wird im BIN-Ordner (\ debug oder wo auch immer Sie erstellt werden) erstellt, solange Sie keine 2016-Funktionen verwenden.

Ich versuche die gleiche Antwort zu finden. Wenn Sie die TargetServerVersion der Lösung einfach so einstellen, wie sie es getan hat, würde sie die richtige Berichtsdefinition verwenden (oder optional die Option, ein Berichtselement vor 2016 hinzuzufügen).

Bis dahin können Sie, wenn Sie mit der rechten Maustaste auf die .rdl und "Code anzeigen" klicken, die folgenden Zeilen ändern, damit sie in SQL 2014 funktioniert. Erstellen Sie einfach eine Sicherungskopie der ursprünglichen .rdl, falls Sie einen Fehler machen:

1) Ersetzen Sie die xmlns-Berichtszeile durch Folgendes:

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

2) Entfernen Sie die Zeilen "ReportSections" und "ReportSection", keep die untergeordnete Baumstruktur, den Tag etc.). So entfernen Sie diese:

  <ReportSections>
    <ReportSection>

und diese...

    </ReportSection>
  </ReportSections>

3) Entfernen Sie den gesamten ReportParametersLayout-Abschnitt. So entfernen Sie (zum Beispiel):

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

Klicken Sie auf "Speichern", gehen Sie zurück in das Design und führen Sie den Bericht aus. Wenn Sie das Design nicht geändert haben, funktioniert es in SQL2014. Sobald Sie alle Felder ändern, wird das Schema 2016 wiederhergestellt. 

Wenn jemand eine Möglichkeit sieht, dieses Verhalten zu korrigieren, lassen Sie es uns wissen. Vielen Dank!

47
user2044384

Mit den folgenden Schritten können Sie Berichte in verschiedenen Versionsformaten von Visual Studio erhalten:

  1. Setzen Sie im Projekt Property Pages die TargetServerVersion auf das gewünschte Format (in diesem Fall SQL Server 2008 R2, 2012 or 2014)
  2. Bauen Sie das Projekt auf
  3. Suchen Sie die Rdl-Dateien im gewünschten Format im Build-Ausgabeordner (auch in den Property-Projektseiten des Projekts angegeben: Build => OutputPath)
4
Philip Bijker

Ich habe ein einfaches PowerShell-Skript geschrieben, das den Ideen der akzeptierten Antwort folgt.

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

Bearbeiten Sie die erste Zeile entsprechend Ihrer Eingabedatei und der letzten Zeile, speichern Sie sie als etwas.ps, führen Sie sie aus und laden Sie die neue Datei hoch.

2
LSuhadolnik

Versuchen Sie diesen Schritt, den ich auf diesem Link gefunden habe und für mich gearbeitet habe: Fehler beim Hochladen eines Berichts

  1. Bei Verwendung von SSDT in 2016 setzen Sie Ihre SQL-Zielversion auf SQL Server 2008 R2, 2012 oder 2014
  2. Reinigen Sie die Lösung
  3. Erstellen Sie die Lösung neu
  4. Kopieren Sie den Inhalt Ihres Ordners "Bin\debug" und ersetzen Sie den Inhalt des Hauptordners damit.
  5. SSRS 2010 sollte Ihr Projekt rendern
1

In meinem Fall, wenn ich Parameter in RDLC Design hinzufügte, gab das System zur Laufzeit eine Ausnahme aus, dass die Berichtsdefinition einen ungültigen Zielnamensraum aufwies. Ich habe gerade den Microsot Report Viewer v 12.0 deinstalliert und das Microsoft.ReportingServices.ReportViewerControl.Winforms aus Nugetpackages Version 15 installiert. Zu diesem Zeitpunkt war die letzte Installation von Atfer für mein Problem behoben. Das Problem ist aufgetreten, weil ich VS 17 habe und eine ältere Version von Report Viewer verwendet habe.

1
Awais Asghar

Ersetzen Sie die zweite Zeile des Berichtscodes, die 2016 enthält, durch Folgendes: 

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

Suchen Sie dann den Abschnitt ReportParametersLayout und entfernen Sie ihn. Drücken Sie die Minustaste, um eine Zeile anzuzeigen, klicken Sie mit der rechten Maustaste und schneiden Sie ab.

Die oben genannten vier Berichte wurden von Crystal in Version 16 konvertiert, wenn ich Version 10 hätte auswählen sollen.

0
Michael Conroy