Visual Studio 2015では、すべての最新の更新を含むいくつかのレポートを作成しました。ただし、レポートを展開しようとすると、次のメッセージが表示されます。
このレポートの定義は、このバージョンのReporting Servicesでは無効であるか、サポートされていません。
11:40:28エラー
レポート定義は、Reporting Servicesの新しいバージョンで作成されているか、そうでないコンテンツを含んでいる可能性があります
11:40:28エラー
整形式またはReporting Servicesスキーマに基づいて無効。詳細:レポート定義に無効なターゲットがあります
11:40:28エラー
名前空間 ' http://schemas.Microsoft.com/sqlserver/reporting/2016/01/reportdefinition 'これはアップグレードできません。
.rdlファイルの最初の行は次のように設定されます。
<?xml version="1.0" encoding="utf-8"?>
<Report MustUnderstand="df"
xmlns="http://schemas.Microsoft.com/sqlserver/reporting/2016/01/reportdefinition"
xmlns:rd="http://schemas.Microsoft.com/SQLServer/reporting/reportdesigner"
xmlns:df="http://schemas.Microsoft.com/sqlserver/reporting/2016/01/reportdefinition/defaultfontfamily">
スキーマ定義を変更できますか?もしそうなら、何に? 2016年を2014年または2012年に変更しようとしましたが、どちらも機能しませんでした。
有効な定義を見に行くことができる場所はありますか?
実際に2016年に行う必要のある変更により「ドキュメントに記載されていないエラー/無効なRDL構造」エラーが発生する同様の問題が発生したため、RDLファイルを編集して以前のバージョンで開いて変更を加えました。それほど難しくはありませんが、タグをいくつか編集する必要があります。
新しいレポートの場合はおそらく古いバージョンを使用する必要がありますが、既存のレポートの場合はこれを実行できます:(2008年に戻しました)
実際にブログ投稿の一部としてこれを行うためのいくつかの超ハック的なコードを作成しましたが、手動での編集は非常に簡単です。
私も最近この問題に遭遇しました。問題の.rdlファイル内の2つの項目を変更するだけでよいことがわかりました。
から変更する:
レポートxmlns = "http://schemas.Microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd = "http://schemas.Microsoft.com/SQLServer/reporting/reportdesigner"
に:
レポート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 "
他の応答とは異なり、2008年ではなく2010年が必要でした。既に展開した.rdlファイルを確認します。
注:ReportSectionsブロックを削除した場合、他の人が指摘したように機能しませんでした。
私は同じ問題に出くわし、これが私がそれを解決した方法です、
ソースレポートの形式と名前空間は最新バージョンに更新されます。ただし、binフォルダレポートは、対象のレポートサーバーバージョンと互換性があるようにビルドされます。
LocalReport(RDLC)を使用したVisual Studo 2017 C#デスクトップアプリケーションで問題が発生した場合は、次の回答を参照してください。
このタスクを自動化しました。
「TextBoxFile」という名前のテキストボックスとボタンを持つフォームを作成します。クリックボタンのコード:
Dim xmlDoc As New XmlDocument()
xmlDoc.Load(TextBoxFile.Text)
Dim root = xmlDoc.DocumentElement
For Each elel As XmlNode In root.ChildNodes
Debug.WriteLine(elel.Name & " " & elel.NodeType)
Next
If root.Attributes()("xmlns").Value <> "http://schemas.Microsoft.com/sqlserver/reporting/2008/01/reportdefinition" Then
root.Attributes()("xmlns").Value = "http://schemas.Microsoft.com/sqlserver/reporting/2008/01/reportdefinition"
End If
Dim nsmgr = New XmlNamespaceManager(xmlDoc.NameTable)
nsmgr.AddNamespace("bk", "http://schemas.Microsoft.com/sqlserver/reporting/2008/01/reportdefinition")
Dim autoRefreshElements = root.GetElementsByTagName("AutoRefresh")
While autoRefreshElements.Count > 0
root.RemoveChild(autoRefreshElements(0))
End While
Dim ReportParametersLayout = root.GetElementsByTagName("ReportParametersLayout")
While ReportParametersLayout.Count > 0
root.RemoveChild(ReportParametersLayout(0))
End While
Dim ReportSections = root.GetElementsByTagName("ReportSections")
If ReportSections.Count > 0 Then
' Move content of ReportSections just below the block.
Dim ReportSection = ReportSections(0).ChildNodes()
' First, copy the elements after
Dim precedent = ReportSections(0)
For Each child As XmlNode In ReportSection(0).ChildNodes
Dim clone = child.Clone
root.InsertAfter(clone, precedent)
precedent = clone
Next
' After deleting the existing block
While ReportSections.Count > 0
root.RemoveChild(ReportSections(0))
End While
End If
xmlDoc.Save(TextBoxFile.Text)
MsgBox("Ok")
VS2017に切り替えてReport Designerバージョン14.2をインストールしたときに同じ問題が発生しました。
私にとっては、この問題を解決するのに必要なのは3つの手順だけです。
1:xmlns
を「 http://schemas.Microsoft.com/sqlserver/reporting/2008/01/reportdefinition 」に変更します。
2:ReportSections
"および" ReportSection
"(タグのみ)を削除します。
3:レポートReportParametersLayout
セクションを削除します。
覚えておく必要があるのは、xmlnsを2008/01に向けることだけです
2008/01に変更してレポートを実行しようとすると、他の2つのステップがエラーメッセージに表示されます。