我使用Visual Studio数据工具2015创建了一个ReportProject。当我使用报表向导创建report.rdl文件时,rdl文件具有2016的架构。我的报表服务器版本为12.0.4213.0。
如何创建与我的报告服务器兼容的report.rdl。我尝试通过右键单击项目来更改TargetServerVersion - >属性并将targetserverversion更改为" Sql server 2008 R2,2012或2014"。但这也不起作用。
答案 0 :(得分:52)
TargetServerVersion
属性的报告的特定版本。我试图找到相同的答案。您可以认为只需按照您的方式设置解决方案的TargetServerVersion将使其使用正确的报告定义(或者可选择它们可以为您提供添加2016年之前报告项的选项)
在此之前,如果右键单击.rdl和“查看代码”,则可以更改以下行以使其在SQL 2014中运行 - 只需备份原始.rdl以防出错:< / p>
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行,保留子树结构体标记等。所以删除这些:
<ReportSections>
<ReportSection>
和这些......
</ReportSection>
</ReportSections>
3)删除整个ReportParametersLayout部分。所以(例如)删除它:
<ReportParametersLayout>
<GridLayoutDefinition>
<NumberOfColumns>4</NumberOfColumns>
<NumberOfRows>2</NumberOfRows>
</GridLayoutDefinition>
</ReportParametersLayout>
点击保存,返回设计并运行报告。如果您尚未修改设计,它将在SQL2014中工作。您更改任何字段的那一刻它将恢复为2016架构。
如果有人看到解决此问题的方法,请告诉我们。谢谢!
答案 1 :(得分:5)
您可以通过以下步骤从Visual Studio获取多种不同版本格式的报告:
TargetServerVersion
设置为所需的格式(在本例中为SQL Server 2008 R2, 2012 or 2014
)Build => OutputPath
)答案 2 :(得分:3)
我写了一个简单的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,运行它并上传新文件。
答案 3 :(得分:1)
尝试我在此链接上找到的这一步并为我工作: Error while uploading a report
答案 4 :(得分:0)
将第二行包含 2016 的报告代码替换为以下内容:
<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
部分并将其删除。点击减去显示一行并右键单击并剪切。
上面修复的四个报告从Crystal转换为版本 16 ,当我选择版本 10 时。
答案 5 :(得分:0)
就我而言,当我在RDLC Design中添加参数时,系统在运行时引发异常,即报告定义具有无效的目标命名空间。 我刚刚解开了Microsot报告查看器v 12.0 并从当时的nugetpackages版本15安装了Microsoft.ReportingServices.ReportViewerControl.Winforms Atfer安装我的问题已解决。花了一整夜才弄清楚。 发生问题是因为我有VS 17,并且使用的是旧版的报表查看器。