【问题标题】:Can I control the version of new SSDT reports in Visual Studio?我可以在 Visual Studio 中控制新 SSDT 报告的版本吗?
【发布时间】:2016-03-17 20:34:59
【问题描述】:

我正在使用 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 保留以前版本格式的报告文件?

【问题讨论】:

  • 有没有人找到解决方法?拉米的评论。 A 没有解决实际问题。
  • 在 SSDT 16.3(内部版本号:14.0.60812.0)中,他们说:“修复了为 SQL Server 2008 R2、2012 和 2014 生成无效报告的问题。”有谁知道这是否解决了问题?

标签: reporting-services visual-studio-2015 ssdt-bi


【解决方案1】:

这是设计使然。

https://connect.microsoft.com/SQLServer/Feedback/Details/2103422

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

【讨论】:

  • 因为它解决了我的问题。我指定目标版本,构建,并从与该版本一起使用的 bin 中获取报告。
  • 为了进一步阐明答案,部署到目标服务器的 .RDL 源可能与您在开发报告时看到的 .RDL 源不同。根据 TargetServerVersion 设置,Visual Studio 将重写 \bin\XXX 文件夹中的 .RDL 文件,并且还会在检测到不受支持的报告功能(例如 SSRS 2008 中的地图)时生成构建警告。
  • 谢谢。我疯了,它改变了,不让我回去。
  • 我在我的项目属性中看不到“目标服务器版本”设置(它不是报告项目类型,我在 .DLL 项目中有一些在微软之前工作得很好此更新已结束) - 我该如何调整?
  • @Ben,如果您的项目不是“报表服务器项目”项目类型,那么您将看不到“TargetServerVersion”属性。常规的“类库”项目不知道如何将 rdl 文件导出到不同的版本。
【解决方案2】:

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

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

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

HTH

【讨论】:

  • 在 SO 中有一条规则说“答案应该始终提供答案”。您的帖子应该是评论。
  • 谢谢,亚历杭德罗。刚刚注意到它并更新了我的答案。
  • 感谢您的回复,但我已经完成了这两件事;正如我在问题中指出的那样,我可以 publish 到 SQL 2012 服务器,但是每次我编辑 rdl 文件以将它们 upload 到服务器时,VS 都会将它们回到损坏的版本。
  • SSDT 14.0.60311.1 也会发生。
猜你喜欢
  • 2018-03-21
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
  • 2014-02-06
  • 2017-08-25
  • 1970-01-01
相关资源
最近更新 更多