我花了很多时间在互联网上搜索,但此时有点绝望。
我们有一个报告有两个 DataSet 字段定义为
Date_Difference = Round((DateDiff("d", Fields!StartDate.Value, Fields!EndDate.Value))* Fields!ProjectStatusPct.Value)
status_date = CDate(DateAdd("d", Fields!Date_Difference.Value, Fields!StartDate.Value))
SSRS 和 BIDS 都安装在同一台服务器(VM、Windows Server 2008 R2)上。Region,Language,Format,机器上我能想到的一切都配置为en_US。
报告属性中的语言是 en-US,我在报告代码中定义了这个 en-US 以确保。
<Language>en-US</Language>
同样在reportViewer.aspx中,我改变了
<%@ Page Language="C#" AutoEventWireup="true" Inherits="Microsoft.ReportingServices.WebServer.ReportViewerPage"%>
至
<%@ Page Language="C#" AutoEventWireup="true" Inherits="Microsoft.ReportingServices.WebServer.ReportViewerPage" Culture="en-US"%>
正如一些帖子所建议的那样。
数据源服务器(MSSQL 2008,在同一台机器上)语言也是 en-US。
该报告在 BIDS 设计器中看起来不错。但是,当我将它部署到服务器时,日期格式会变得混乱。报告服务器将 MM/dd/yyyy(美国格式)作为 dd/MM/yyyy(加拿大格式)。结果,status_date 字段总是生成错误的日期,如果涉及到像 03/31/2012 这样的日期,则为 NULL
当我查看 SSRS 日志文件时,标题始终显示为
<Header><Product>Microsoft SQL Server Reporting Services Version 2007.0100.5500.00 ((Katmai_PCU_Main).110922-0336 )</Product><Locale>English (Canada)</Locale><TimeZone>Pacific Daylight Time</TimeZone><Path>C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\Logfiles\ReportServerService__06_07_2012_16_30_41.log</Path><SystemName>KAM1ODDBS06</SystemName><OSName>Microsoft Windows NT 6.1.7601 Service Pack 1</OSName><OSVersion>6.1.7601</OSVersion><ProcessID>1160</ProcessID></Header>rshost!rshost!ec0!06/07/2012-16:30:41:: i INFO: CLR runtime is initialized.
所以我认为 BIDS 采用本地机器的语言设置,然后正确处理日期。
更多信息 :
- 浏览器(IE) 的语言是 en_US
- 当我将报告部署到具有 en_US 语言环境的其他报告服务器时,它可以工作。
我的问题是,如何将此报告服务器的区域设置也更改为 en_US?