Visual Studioデータツール2015でReportProjectを作成しました。レポートウィザードを使用してreport.rdlファイルを作成すると、rdlファイルには2016のスキーマが含まれます。レポートサーバーのバージョンは12.0.4213.0です。
レポートサーバーと互換性のあるreport.rdlを作成するにはどうすればよいですか。プロジェクト->プロパティを右クリックし、targetserverversionを「Sql server 2008 R2、2012または2014」に変更して、TargetServerVersionを変更しようとしました。しかし、これも機能しません。
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スキーマに戻ります。
誰かがこの動作を修正する方法を見つけた場合はお知らせください。ありがとう!
次の手順で、Visual Studioからいくつかの異なるバージョン形式のレポートを取得できます。
TargetServerVersion
を目的の形式に設定します(この場合はSQL Server 2008 R2, 2012 or 2014
)Build => OutputPath
)受け入れられた答えのアイデアに従う単純な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として保存し、実行して新しいファイルをアップロードします。
このリンクで見つけて私のために働いたこのステップを試してください: レポートのアップロード中のエラー
私の場合、RDLC Designにパラメーターを追加したとき、システムは実行時にレポート定義に無効なターゲット名前空間があるという例外をスローします。 Microsotレポートビューアーv 12.0をアンインストールし、その時点でnugetpackagesバージョン15からMicrosoft.ReportingServices.ReportViewerControl.Winformsをインストールしたところ、最新版のAtferが私の問題をインストールしたことが解決されました。 VS 17があり、レポートビューアーの古いバージョンを使用していたため、問題が発生していました。
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を選択する必要がありました。