web-dev-qa-db-ja.com

レポート定義に無効なターゲット名前空間rsInvalidReportDefinitionがあります

Visual Studioデータツール2015でReportProjectを作成しました。レポートウィザードを使用してreport.rdlファイルを作成すると、rdlファイルには2016のスキーマが含まれます。レポートサーバーのバージョンは12.0.4213.0です。

レポートサーバーと互換性のあるreport.rdlを作成するにはどうすればよいですか。プロジェクト->プロパティを右クリックし、targetserverversionを「Sql server 2008 R2、2012または2014」に変更して、TargetServerVersionを変更しようとしました。しかし、これも機能しません。

17
Anirudhan J

編集:TargetServerVersionプロパティとして設定したレポートの特定のバージョンは、2016の機能を使用していない限り、BIN(\ debugまたはビルド先)フォルダーに作成されます。

私は同じ答えを見つけようとしています。ソリューションのTargetServerVersionを設定するだけで正しいレポート定義を使用できるようになります(または、オプションで、2016年より前のレポートアイテムを追加するオプションを提供できます)

それまでは、.rdlを右クリックして「コードを表示」すると、次の行を変更してSQL 2014で機能するようにできます。間違えた場合に備えて、元の.rdlのバックアップを作成してください。

1)レポートのxmlns行を次の行に置き換えます。

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

2)ReportSectionsおよびReportSection行を削除します。keepingその下の子ツリー構造の本体タグなど)。これらを削除します。

  <ReportSections>
    <ReportSection>

そしてこれら...

    </ReportSection>
  </ReportSections>

3)ReportParametersLayoutセクション全体を削除します。 (たとえば)これを削除します:

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

保存をクリックし、デザインに戻ってレポートを実行します。デザインを変更していない場合、SQL2014で機能します。フィールドを変更すると、2016スキーマに戻ります。

誰かがこの動作を修正する方法を見つけた場合はお知らせください。ありがとう!

55
tb1

次の手順で、Visual Studioからいくつかの異なるバージョン形式のレポートを取得できます。

  1. プロジェクトのプロパティページで、TargetServerVersionを目的の形式に設定します(この場合はSQL Server 2008 R2, 2012 or 2014
  2. プロジェクトを構築する
  3. ビルド出力フォルダー(プロジェクトのプロパティページでも指定されているBuild => OutputPath
6
Philip Bijker

受け入れられた答えのアイデアに従う単純なPowerShellスクリプトを作成しました。

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

入力ファイルと最後の行に一致するように最初の行を編集し、something.psとして保存し、実行して新しいファイルをアップロードします。

4
lsu

このリンクで見つけて私のために働いたこのステップを試してください: レポートのアップロード中のエラー

  1. 2016年にSSDTを使用して、ターゲットSQLバージョンをSQL Server 2008 R2、2012または2014に設定します
  2. ソリューションをきれいにする
  3. ソリューションを再構築する
  4. Bin\debugフォルダーのコンテンツをコピーし、メインフォルダーのコンテンツをそれに置き換えます(必ずバックアップをとってください)
  5. SSRS 2010はプロジェクトをレンダリングする必要があります
1

私の場合、RDLC Designにパラメーターを追加したとき、システムは実行時にレポート定義に無効なターゲット名前空間があるという例外をスローします。 Microsotレポートビューアーv 12.0をアンインストールし、その時点でnugetpackagesバージョン15からMicrosoft.ReportingServices.ReportViewerControl.Winformsをインストールしたところ、最新版のAtferが私の問題をインストールしたことが解決されました。 VS 17があり、レポートビューアーの古いバージョンを使用していたため、問題が発生していました。

1
Awais Asghar

2016を含むレポートコードの2行目を以下に置き換えます。

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

次に、ReportParametersLayoutセクションを見つけて削除します。マイナスを押して1行を表示し、右クリックしてカットします。

上記の修正により、Crystalからバージョン16に変換された4つのレポートが、バージョン1を選択する必要がありました。

0
Michael Conroy