Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQLXML: непонятки с форматами чисел.  [new]
Акуличев Дмитрий
Member

Откуда:
Сообщений: 17
Под IIS asp-скрипт исполняет xml-шаблон.
Скрипт примерно такой (JScript, ADO):
  var cmd = Server.CreateObject("ADODB.Command");
  var stm = Server.CreateObject("ADODB.Stream");

  stm.Type = ADODB.adTypeText;
  stm.Charset = "windows-1251";
  stm.Open();
  stm.LoadFromFile(Server.MapPath(sTemplateName));

  cmd.ActiveConnection = Connection;
  cmd.Dialect = DBGUID_MSSQLXML;
  cmd.Properties.Item("Output Stream").Value = xml;
  cmd.CommandStream = stm;
  cmd.Execute(null , null, ADODB.adExecuteStream);

Шаблон:
<?xml version="1.0" encoding="windows-1251"?>
<Rows xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
<sql:query>
select * from dbo.TableLalala
for xml raw
</sql:query>
</Rows>

Всё прекрасно исполняется, за исключением одного НО.
На одной машине (W2k prof SP4 RUS) числа в результирующем xml записаны в виде 123.45 (с разделителем "точка"), а на другой машине (W2k server SP4 ENG) -- в виде 123,45 (с разделителем "запятая").
Оба экземпляра IIS подключаются к одному и тому же SQL-серверу, используя один и тот же логин.

Причём, тот же запрос выполненый в QA возвращает всегда числа с разделителем "точка".

Фрагменты разных результатов (тип колонки SMALLMONEY):

<Rows><row Cash="12"... /><row Cash="5.5"... />...</Rows>
<Rows><row Cash="12"... /><row Cash="5,5"... />...</Rows>
<row Cash="12.0000"... /><row Cash="5.5000"... />...

Первый результат -- скрипт на W2k prof RUS;
Второй результат -- скрипт на W2k server ENG;
Третий результат -- QA

Нутром чую, что где-то что-то надо настроить. А вот что -- не знаю...
7 июн 05, 19:19    [1604419]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Что-то брехня какая то - нет в стандарте XML представления данных типа smallmoney с разделителем "запятая" - только "точка".
Думаю, что сам запрос FOR XML какой-то кривоватый - представляет как-то деньги в символьном виде с предварительным преобразованием денег в строку в соответствие с региональными настройками.
Для обработки самого документа на приемнике можно попробовать сперва слить всё это во временную табличку, в которой этому полю будет соответствовать колонка символьного типа с последующей обработкой запятой и преобразованием к деньгам.
8 июн 05, 06:43    [1604908]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
Акуличев Дмитрий
Member

Откуда:
Сообщений: 17
Ясное дело -- брехня. Сидел, специално придумывал, как бы получше сбрехать, ага. От нефиг делать.

Запрос самый примитивный: select * from table for xml raw
Приведены фрагменты реальных результатов.

Если результаты выполнения через ADO.Command различаются только разделителем, то в результатах выполнения в QA ещё и хвостовые нули.

Понятно, что дело в языковых настройках, но какого компонента? Изменения глобальных системных настроек, языка базы, свойства подключения эффекта не дали. Какие ещё?
8 июн 05, 11:34    [1605545]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Первый результат -- скрипт на W2k prof RUS;
Второй результат -- скрипт на W2k server ENG;

Региональные установки ???
8 июн 05, 11:36    [1605554]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
Акуличев Дмитрий
Member

Откуда:
Сообщений: 17
Glory
Региональные установки ???


Я бы с радостью согласился. Но.
На русской винде настройки русские (в том числе, десятичный разделитель -- "зяпятая"), а выдаётся с точкой.
На англ. винде -- локаль eng. us. (в том числе, десятичный разделитель -- "точка"), а выдаётся с запятой.

Я б ещё понял, если б наоборот было...

Изменения системных настроек эффекта не дают...
8 июн 05, 11:49    [1605629]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
Glory
Member

Откуда:
Сообщений: 104760
На англ. винде -- локаль eng. us.
Локаль какой учетной записи ?
8 июн 05, 11:51    [1605635]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
Акуличев Дмитрий
Member

Откуда:
Сообщений: 17
Glory
Локаль какой учетной записи ?


Тьфу, блин.
Ламо. :-/

Поменял для учётной записи, под которой работает IIS.
"Свершилось чудо!" (ц)
:))
8 июн 05, 12:01    [1605681]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
qu-qu
Member

Откуда:
Сообщений: 9118
Акуличев Дмитрий
...Поменял для учётной записи, под которой работает IIS...


Отсюда, поподробнее можно, пжлст?
Как для IUSR_<MACHINENAME> можно поменять локаль? Или у вас своя "собственная" учетная запись для IIS-а используется?
8 июн 05, 12:29    [1605825]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
Акуличев Дмитрий
Member

Откуда:
Сообщений: 17
А чем учётная запись "IUSR_xxxx" принципиально отличается от учётной записи "Вася Пупкин оператор"?

Тем более, что запись IUSR_xxxx меня нисколько не волнует, потому что у меня пользователи ходят используя NTLM авторизацию. Так что менял я именно запись "Вася Пупкин".
8 июн 05, 12:56    [1605956]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
qu-qu
Member

Откуда:
Сообщений: 9118
Акуличев Дмитрий
А чем учётная запись "IUSR_xxxx" принципиально отличается от учётной записи "Вася Пупкин оператор"?


Поразительно странная снобская манера отвечать вопросом на вопрос, предварительно "обернув" собственное знание предмета в само-собой разумеющуюся информацию...
Может быть я настолько давно не администрировал WinServers, что для меня такие "хитрости" как настройка локалей для других учетных записей до сих пор ассоциируются с необходимостью залогиниться именно под этой учетной записью, чтобы в ControlPanel выставить все ручками.
Но, как я понимаю, под учетной записью IUSR_xxxxx залогиниться нельзя, т.к. пароль для нее "знает только ветер", поэтому и спросил конкретно про эту учетную запись, а не про "Васю Пупкина", как вы могли бы заметить из текста вопроса, если бы не упивались попусту собственной крутостью...
8 июн 05, 13:23    [1606112]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
Акуличев Дмитрий
Member

Откуда:
Сообщений: 17
Ба, да вы буйный!
8 июн 05, 13:40    [1606208]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Акуличев Дмитрий
Ба, да вы буйный!

По-моему, qu-qu задал совершенно нормальный вопрос.
8 июн 05, 13:44    [1606236]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
Акуличев Дмитрий
Member

Откуда:
Сообщений: 17
По-моему, был вполне нормальный ответ.
8 июн 05, 13:48    [1606256]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Акуличев Дмитрий
По-моему, был вполне нормальный ответ.

Ну не знаю - на вопрос "Как для IUSR_<MACHINENAME> можно поменять локаль? " я лично ответа не увидел.
8 июн 05, 13:55    [1606288]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
Акуличев Дмитрий
Member

Откуда:
Сообщений: 17
Ну, не знаю...
Возможно, ответ "Я не менял локаль у IUSR_<MACHINENAME>" действительно не является ответом на вопрос "Как поменять локаль у IUSR_<MACHINENAME>"...
8 июн 05, 14:06    [1606334]     Ответить | Цитировать Сообщить модератору
 Re: SQLXML: непонятки с форматами чисел.  [new]
qu-qu
Member

Откуда:
Сообщений: 9118
Акуличев Дмитрий
... Возможно, ответ "Я не менял локаль у IUSR_<MACHINENAME>" действительно не является ответом на вопрос "Как поменять локаль у IUSR_<MACHINENAME>"...


Не является, не является... не надо делать вынужденные одолжения, когда вас культурно "поймали за язык" и "приперли к стенке" только потому, что у вас уже пропал интерес к проблеме в частном случае (при передаче процессу IIS-а полномочий аккаунта конкретного пользователя через NTLM).

Но вопрос все-таки остается актуальным, т.к. не все web-приложения такие "хитрые", что могут себе позволить имперсонировать пользователя через NTLM, то настройка локалей именно для IUSR_xxxxxx представляет собой очень интересную задачу как раз применительно к заявленной тематике топика в наиболее общем плане.
8 июн 05, 17:58    [1607411]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить