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

Откуда: из России
Сообщений: 888
Обновили ms sql 2014 до версии 12.0.2480, теперь запросы к Oracle отбрасывают дробную часть .
Select A From OpenQuery(ORA ,N'Select 1.5 As A From Dual')
вернет 1
и все это на трех серверах, обновили неделю\две назад(даже обновляли специально по одному), а разработчики заметили только сейчас. Проверить настройки с рабочим sql 2014 нет., но проверил с серверов 2012, где идут запросы к Oracle,но там и ОС разные
сравнил:
Рег. настройки в ОС - одинаковы
Драйвера Oracle -11.2.0 - одинаковые
Настройки в реестре NLS_Lang= american_america.cl8mswin1251 - одинаковые
Проверил результаты: Select * From OpenQuery(ORA,N'select * from NLS_DATABASE_PARAMETERS ') - одинаковые. но я тут не силен, может это зависит от пользователя

Что еще можно сравнить, либо из-за чего это, как еще решали?
Есть еще желание вывести Oracle за процесс ms sql server, сняв AllowInprocess в настройках провайдера, но тогда разрабы обидятся, половина запросов полетит, хотя такое помогло у нас на sql 2008r2 на другом сервере.
21 апр 15, 12:28    [17543325]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 888
кстати, как деинсталлировать последнее обновление ms sql server, т.е откатиться?
21 апр 15, 15:24    [17544453]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
o-o
Guest
Slava_Nik,

Oracle возвращает результат в зависимости от настроек сессии.
и вы посмотрели только то, что в реестре, а в реестре он смотрит, если не находит переменную среды,
она имеет приоритет над реестром.
можете сравнить параметры сессий так:
select * from nls_session_parameters
where parameter IN ('NLS_LANGUAGE', 'NLS_TERRITORY', 'NLS_NUMERIC_CHARACTERS)

NLS_NUMERIC_CHARACTERS выводится из NLS_TERRITORY, если явно не указан, а последний входит в NLS_LANG,
но лучше запросом явно его посмотреть,
только вряд ли там пустота
(если у вас взялось из реестра, то территорией проходит Америка со своими традиционными разделителями)
---
не знаю, как откатывать CU,
начиная с 2008, можно откатывать сервис-паки через Add/Remove Programs,
там если галочку Show updates поставить, он выдает все паки
21 апр 15, 16:22    [17544809]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 888
короче действительно, после обновление CU 5,6 на ms sql 2014 запрос к Oracle такого вида
Select A From OpenQuery(ORA'Select 1.5 As A From Dual')

будет возвращать 1
на версии 12.0.2000.8 будет значение 1,5
как с параметром AllowInProcess,так и без него.

советовал разрабам делать с преобразованием типов
Select cast( A as float) From OpenQuery(ADB,N'Select to_char(1.5) As A From Dual')


Драйвера Oracle 11 версии были.
22 апр 15, 18:49    [17550673]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Может у вас один сервак цифру как русскую понимает, а другой как английскую.

Поиграйтесь с этими параметрами линкед сервера

EXEC master.dbo.sp_serveroption @server=N'', @optname=N'collation compatible', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'', @optname=N'collation name', @optvalue=null
GO

EXEC master.dbo.sp_serveroption @server=N'', @optname=N'use remote collation', @optvalue=N'true'
GO
22 апр 15, 18:52    [17550690]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
o-o
Guest
a_voronin
Может у вас один сервак цифру как русскую понимает, а другой как английскую.

какой знаток цифр, однако
я знаю только римские, арабские и индийские цифры
22 апр 15, 21:20    [17551075]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
Glory
Member

Откуда:
Сообщений: 104760
Slava_Nik
советовал разрабам делать с преобразованием типов
Select cast( A as float) From OpenQuery(ADB,N'Select to_char(1.5) As A From Dual')

Типы данных полей определяется ДО выполнения запроса. Через метаданные, которые предоставляет линкед сервер.
Наверное надо убедиться, что эти метаданные возвращают правильные типы
23 апр 15, 09:56    [17552458]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 888
Glory
Slava_Nik
советовал разрабам делать с преобразованием типов
Select cast( A as float) From OpenQuery(ADB,N'Select to_char(1.5) As A From Dual')

Типы данных полей определяется ДО выполнения запроса. Через метаданные, которые предоставляет линкед сервер.
Наверное надо убедиться, что эти метаданные возвращают правильные типы

до обновления сервера, они получали то нужные метаданные, а после ничего в правах не менялось.
23 апр 15, 11:06    [17552847]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
Glory
Member

Откуда:
Сообщений: 104760
Slava_Nik
до обновления сервера, они получали то нужные метаданные, а после ничего в правах не менялось.

"Они" для вас - это кто ?
Ораклавские сервера ? Драйвера ?
23 апр 15, 11:09    [17552860]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 888
Glory
Slava_Nik
до обновления сервера, они получали то нужные метаданные, а после ничего в правах не менялось.

"Они" для вас - это кто ?
Ораклавские сервера ? Драйвера ?

драйвера.
Какие права нужны, чтобы выполнить данный запрос
Select A From
OpenQuery(ora,N'Select 1.5 As A From Dual')

и получить значение 1.5, а не 1.
В Oracle и в настройках драйверов ничего не менялось, поменялся только сиквел(обновился)
23 апр 15, 11:25    [17552951]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
Glory
Member

Откуда:
Сообщений: 104760
Slava_Nik
Какие права нужны, чтобы выполнить данный запрос

Причем тут права ?
https://technet.microsoft.com/en-us/library/ms190405(v=sql.105).aspx?f=255&MSPPError=-2147217396
23 апр 15, 11:30    [17553000]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 888
Glory
Slava_Nik
Какие права нужны, чтобы выполнить данный запрос

Причем тут права ?
https://technet.microsoft.com/en-us/library/ms190405(v=sql.105).aspx?f=255&MSPPError=-2147217396

и что?
Получается что до обновления , получались одни метаданные, после уже другие.
Дальше что?
23 апр 15, 11:54    [17553180]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
Glory
Member

Откуда:
Сообщений: 104760
Slava_Nik
и что?

То, что константы и вычисляемые выражения не имеют метаданных записанных в каких то системных таблицах. В отличии от полей таблиц/представлений
23 апр 15, 11:56    [17553195]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 888
Glory
Slava_Nik
и что?

То, что константы и вычисляемые выражения не имеют метаданных записанных в каких то системных таблицах. В отличии от полей таблиц/представлений

и что далее , какое решение, кроме как я указал выше?

я привожу то, что этот запрос работает до обновления и возвращает 1,5 , а после обновления 1.
это запрос я делаю для тестирования.
с запросами к таблицам такая же ситуация, до обновления работает , после нет.
23 апр 15, 12:03    [17553236]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
Glory
Member

Откуда:
Сообщений: 104760
Slava_Nik
и что далее , какое решение, кроме как я указал выше?

я привожу то, что этот запрос работает до обновления и возвращает 1,5 , а после обновления 1.

Наверное надо явно указывать в запросе какого типа ваши константы

Slava_Nik
с запросами к таблицам такая же ситуация, до обновления работает , после нет.

Млин. И какие типы возвращают метаданные ?
23 апр 15, 12:06    [17553260]     Ответить | Цитировать Сообщить модератору
 Re: Отбрасывается дробная часть в запросах к Oracle после обновления sql server  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Насколько я знаю, Оракле частенько подпиливает драйвера после очередного обновления MS SQL. Видимо, парням хардкод не чужд.
23 апр 15, 12:47    [17553536]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить