20

我正在使用 Visual Studio SSDT BI 加载项为 SQL Server Reporting Services 创建报告。我创建的项目配置为面向 SQL Server 版本 2008/2012/2014,因为这些是我们客户拥有的目标 SQL Server。

但是,在 Visual Studio 中创建的报告文件似乎都针对 SQL Server 2016。如果我将rdl文件复制到另一台服务器并通过浏览器上传它们,我会被告知它们来自较新版本的 SSRS 并且不能被上传。

问题是双重的:

  1. <Report>标记包含一个新的 2016 命名空间,该命名空间替换了先前版本中存在的 2010 命名空间:

    <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/2016/01/reportdefinition">
    
  2. 新文件格式包括在 2016 命名空间中定义的参数布局部分,但在 2010 命名空间中没有:

     <ReportParametersLayout>
                .
                .
                .
     </ReportParametersLayout>
    

如果我将命名空间改回2010并删除该ReportParametersLayout部分,则报表在 SQL 2012 中运行良好,但 Visual Studio 将在我下次打开报表时将其放回原处。

(有趣的是,如果我直接从 VS 部署报告,我会收到一条警告,指出参数布局在 2012 年不受支持并被删除,这意味着 Visual Studio 正在即时修复报告定义。)

有什么方法可以强制 VS 将报告文件保留为以前版本的格式?

4

2 回答 2

15

这是设计使然。

请参阅https://connect.microsoft.com/SQLServer/Feedback/Details/2103422

Riccardo [MSFT] 于 2015 年 12 月 18 日下午 5:07 发布
按照设计,TargetServerVersion 会影响构建输出文件,而不是源文件。您部署构建输出文件(可以从项目中的 \bin\Debug 或 \bin\Release 文件夹中获取)而不是源文件。

于 2016-04-27T00:50:33.147 回答
3

使用 SSDT 版本 14.0.60305.0 时遇到同样的问题。

1) 我能够更改<report>每个报告的标记中的 xmls 命名空间属性以匹配目标环境。关于如何确定目标服务器的 RDL Schema 版本,请参考https://msdn.microsoft.com/en-us/library/cc627465.aspx 。

2) 我将项目属性页面中的 TargetServerVersion 更改为“SQL Server 2008 R2、2012 或 2014”。参考http://www.sqlskills.com/blogs/tim/issue-publishing-to-ssrs-2012-with-ssdt-2015/查看如何打开项目属性页面。

高温高压

于 2016-03-17T22:32:37.967 回答