Неверный формат даты (локаль) в отчете служб отчетов SQL Server - PullRequest
0 голосов
/ 15 января 2012

Я не могу решить проблему с отчетом по SSRS.

Сценарий: ссылка в приложении Silverlight загружает новую веб-страницу, содержащую элемент управления Microsoft.Reporting.WebForms.ReportViewer. Параметры для элемента управления передаются в QueryString на новую страницу.

Если дата передается как 01/08/2011, при загрузке отчета элемент управления датой в средстве просмотра отчетов имеет значение 08/01/2011 (т. Е. Он был преобразован в американский формат, и моя локаль - United Королевство, en-GB).

Это происходит только в развернутом решении, оно корректно работает в Visual Studio на моем локальном ПК. Мои настройки IE верны.

Я выполнил следующие проверки на развернутом сервере IIS (IIS 6.0): -

Учетная запись для соответствующего пула приложений = сетевая служба.

В Реестре SID для этого пользователя - S-1-5-20, поэтому я проверил настройки реестра в разделе HKEY_USERS> S-1-5-20> Панель управления> Международный. Все они были правильно установлены для Соединенного Королевства. Хотя теоретически они не должны иметь эффекта, я также проверил те же настройки для локальной системы (S-1-5-18) и NT-Authority (S-1-5-19), которые были идентичны.

Затем я проверил Культуру и UI Культуру на веб-сайте. Это были следующие: -

Щелкните правой кнопкой мыши веб-сайт - Свойства> ASP.NET. Нажмите кнопку «Изменить глобальную конфигурацию», чтобы проверить настройки конфигурации сервера. Перейдите на вкладку «Приложение» и просмотрите значения «Культура» и «Интерфейс».

Оба значения установлены как en-GB. Итак, хорошо.

То же самое сделал с кнопкой «Редактировать конфигурацию», которая предназначена для просмотра / редактирования файла конфигурации конкретного приложения. Значения файла конфигурации веб-сайтов заменят значения файла конфигурации сервера. Это тоже нормально.

Затем я проверил сервер SSRS.

Сервис работает под учетной записью «Локальная система». Настройки реестра для этой учетной записи верны. HKEY_USERS> S-1-5-18> Панель управления> Международный. S-1-5-19 и S-1-5-20 также правильные

Директива страницы ReportServer.aspx включает Culture = "en-GB" (например, <% @ Page Language = "C #" AutoEventWireup = "true" Inherits = "Microsoft.ReportingServices.WebServer.ReportViewerPage" Culture = "en-GB"%>)

В коде значения параметров устанавливаются с использованием Microsoft.Reporting.WebForms.ReportViewer.SetParameters (ms.ReportParameter []) и ms.ReportParameter (name, value, visible), и параметры, безусловно, являются правильными значениями при получении на данный момент через веб-приложение (когда я перехожу через код).

Я не знаю, куда повернуть дальше. Единственное отличие, которое у меня есть, но я не могу себе представить, что это проблема, состоит в том, что строка запроса кодируется URLE в развернутой версии, но не в проекте на моем локальном ПК, т.е.

[версия сервера] ...% 26END_DATE% 3d31% 2f07% 2f2012 + 00% 3A00% 3A00% 26START_DATE% 3d01% 2f08% 2f2011 + 00% 3A00% 3A00

[локальная версия]

... & END_DATE = 31/07/2012 + 00: 00: 00 & START_DATE = 01/08/2011 + 00: 00: 00

Буду крайне признателен за любые предложения, которые есть у каждого.

1 Ответ

0 голосов
/ 18 января 2012

Если вы передадите дату в формате дд-ммм-гггг, то она будет однозначной, например, 18 января 2011 года.

...