上传报告时出现错误。

47

我使用安装了SSDT工具的Visual Studio 2015创建了一个报告,下载链接为:

https://msdn.microsoft.com/zh-cn/mt186501

数据库使用的是SQL Server 2014。这份报告在我的机器上可以正常运作,但是当我尝试将其上传到客户的机器上(客户的机器只安装了SQL Server 2014而没有安装Visual Studio)时,出现了以下错误:

“此报表的定义无效或不受此版本的Reporting Services支持。该报表可能是由较新版本的Reporting Services创建的,或者包含的内容不符合Reporting Services模式的格式或有效性要求。详细信息:报表定义具有无效的目标名称空间 'http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition',不能进行升级。(rsInvalidReportDefinition)”


8个回答

89
如果您的解决方案>属性>TargetServerVersion设置为SQL Server 2008 R2、2012或2014,然后从bin文件夹而不是项目文件夹上传RDL,则应该可以工作。我遇到了相同的错误,这个方法解决了问题。

18
在这里,有用的部分是查看 bin 文件夹而不是项目文件夹。 - Mark Peters
4
重新构建项目以便在 \bin\debug 文件夹中反映出报告编辑的更改内容。.rdl文件 - Lew
5
在Visual Studio 2017中,TargetServerVersion在哪里? - user7538827
4
我遇到了同样的问题,在VS 2017中找不到解决方案 > 属性 > TargetServerVersion。请问您能帮忙翻译其他内容吗? - Bonomi
2
即使过去它似乎对我起作用,但今天我再次遇到了同样的问题。所以这次帮助我的是进入报告“预览”,这使得所有报告都被重建。简单的“重建解决方案”并没有起到帮助作用... - Gabrielius
显示剩余4条评论

5

以下是我使用的方法,适用于需要编辑rdlc报告并且遇到SSRS 2016版本错误的情况。如需详细步骤,请单击以下链接: http://eskonr.com/2018/06/configmgr-ssrs-failed-to-upload-rdl-with-error-code-definition-of-this-report-is-not-valid-or-supported-by-this-version-of-reporting-services/

更改内容:

  1. 在文件中搜索2016版本,并将其更改为2010
  2. 在文件中搜索"ReportParametersLayout",然后删除整个代码块(该代码是在Visual Studio 2016版本中创建的)。

如上所示,删除整个代码块并保存报告即可。


5

您的报告针对SQL Server 2016。


它在我的本地机器上运行。我没有安装SQL 2016,只有SQL 2014。当我说它可以工作时,我的意思是,我可以从Visual Studio 2015中运行它。 - Abe
3
我已将TargetServerVersion设置为SQL Server 2008 R2、2012或者2014,但每次在Visual Studio中保存时,它都会重写报表以使用2016的命名空间! - timk
哎呀!在 Connect 上提出一个 bug,然后可能在主 SSDT 论坛上指向它。 - Ed Elliott
2
@timk,这是设计上的问题。请参见https://connect.microsoft.com/SQLServer/Feedback/Details/2103422。 - Rami A.
2
设置目标版本并构建项目后,您可以上传输出文件夹(默认为bin/debug)中的rdl文件。原始源rdl文件不会被上传,只会上传已构建的rdl文件。 - pexxxy
显示剩余3条评论

3
如果您使用的是Visual Studio 2017
更新:微软在2017年4月18日发布了一份文档,描述了如何配置和使用Visual Studio 2017中的报表工具。
Visual Studio 2017默认没有安装ReportViewer工具。需要安装Microsoft Rdlc Report Designer for Visual Studio扩展程序,并将其添加到工具箱中,这样就会出现一个非视觉组件,位于窗体下方。
微软支持告诉我这是一个错误,但截至2017年4月21日,“它的设计是可以工作的”。
每个需要ReportViewer的项目都需要遵循以下步骤:
如果您在工具箱中有ReportViewer,请删除它。选中,右键单击并删除。 您必须打开一个带有窗体的项目才能执行此操作。 如果已安装Microsoft Rdlc Report Designer for Visual Studio扩展程序,请卸载它。 关闭解决方案并重新启动Visual Studio。这是一个关键步骤,如果在切换解决方案时不重启VS,将会出现错误。 打开您的解决方案。 打开NuGet包管理器控制台(工具/NuGet包管理器/包管理器控制台) 在PM>提示符下输入此命令,大小写敏感。
Install-Package Microsoft.ReportingServices.ReportViewerControl.WinForms
您应该会看到描述软件包安装的文本。
希望它能正常工作。

谢谢,对我很有帮助。按照步骤并将 SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin")); 添加到 Global.asax 中。 - KMR

1

虽然问题已经得到了回答,但是这个解决方案可能对新访问者有所帮助。

在Visual Studio中,转到工具->扩展和更新->更新->更新报表服务。

关闭Visual Studio后,它会安装一个VSiX安装程序。

对我来说,问题已经解决了。希望这可以帮到你。


1
这帮助我在VS 2017中处理rdlc。 - Winks

0

我从链接 "https://www.sqlskills.com/blogs/tim/issue-publishing-to-ssrs-2012-with-ssdt-2015/" 中得到了答案。

使用SSDT 2015发布到SSRS 2012的问题 作者:Tim Radney 发布时间:2016年1月22日下午2:58 最近,我在帮助一位客户,他试图使用SQL Server Data Tools 2015更新和生成报告,这些报告将部署到SQL Server Reporting Services 2012。在尝试部署报告时,客户会收到以下错误:

"[rsInvalidReportDefinition]此报表的定义无效或不受此版本的Reporting Services支持。报表定义可能是使用较新版本的Reporting Services创建的,或包含基于Reporting Services模式不规范或无效的内容。"

我知道SSDT 2015应该向后兼容,并能够与多个版本的SQL Server产品一起使用,因此我必须进行一些研究,以确定需要更改什么才能将报告发布到SSRS 2012。

在我的实验室中,我创建了一个名为GetDatabases的新项目。这个项目是一个基本报告,可以查询系统表。我尝试在项目属性下更改的第一件事是TargetServerVersion。
我将TargetServerVersion更新为“SQL Server 2008 R2、2012或2014”,默认值为“SQL Server 2016”。我还将TargetServerURL更新为运行SSRS 2012的开发服务器。我对发布和调试配置选项都进行了这些更改。
在进行这些更改后,我仍然无法部署报告。经过更多的研究,我找到了一个位置来更改Business Intelligence Designer的默认部署服务器版本。这位于“工具”然后是“选项”下。默认设置为版本13.0,一旦我将版本更改为11.0以匹配我要部署到的服务器,我就能成功地将我的报告部署到SSRS 2012。 输入图像描述

我最近也遇到了这个问题。尽管更改目标版本,如果在服务器上部署,它仍然失败。我的编辑方式是打开RDL文件并选择编辑器(我使用的是Notepad ++)。将XML头从2015更改为2010。删除报告参数布局部分和网格布局部分。删除后再次在编辑器中打开文件并检查其是否已删除。保存更改后尝试上传RDL文件。希望这可以帮助您。 - Abe

0

对我来说,没有任何提出的解决方案有效,尽管我已经在项目属性中正确设置了TargetServerVersion。请注意,我认为手动编辑.rdl文件不是可持续的解决方案。

我有一个奇怪的解决方案: 在IDE(我的情况下是Visual Studio 2019)中将解决方案配置从Debug更改为DebugLocal。现在将TargetServerVersion更改为您想要的任何版本,重新构建报告项目并使用任何文本编辑器检查bin \ DebugLocal文件夹中的.rdl文件。

您会注意到现在命名空间对每个TargetServerVersion +重建都有反应。

注意:这似乎仅适用于将解决方案配置设置为DebugLocal,而不适用于DebugRelease


0

我右键单击报告,然后单击发布报告1.rdlc,这对我很有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接