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

При обращении к представлению Oracle из под MS SQL , выдается ошибка
OLE DB provider "OraOLEDB.Oracle" for linked server "ASTUE" returned message "Table does not exist.".
OLE DB provider "OraOLEDB.Oracle" for linked server "ASTUE" returned message "Table does not exist.".
OLE DB provider "OraOLEDB.Oracle" for linked server "ASTUE" returned message "ORA-01861: literal does not match format string".
Msg 7306, Level 16, State 2, Line 1
Cannot open the table ""RSDU2CLARH"."V_73T_CELL_248"" from OLE DB provider "OraOLEDB.Oracle" for linked server "ASTUE". The specified table or view does not exist or contains errors.


Право select на представление дано.

Экспериментальным путем было выяснено, что не отрабатывают стандартные функции oracle, которые зашиты в представлении, такие как to_date, +, -, *.

В чем может быть дело ?
31 окт 16, 07:28    [19840032]     Ответить | Цитировать Сообщить модератору
 Re: linked server с oracle  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Guest9796857
Добрый день!

При обращении к представлению Oracle из под MS SQL , выдается ошибка
OLE DB provider "OraOLEDB.Oracle" for linked server "ASTUE" returned message "Table does not exist.".
OLE DB provider "OraOLEDB.Oracle" for linked server "ASTUE" returned message "Table does not exist.".
OLE DB provider "OraOLEDB.Oracle" for linked server "ASTUE" returned message "ORA-01861: literal does not match format string".
Msg 7306, Level 16, State 2, Line 1
Cannot open the table ""RSDU2CLARH"."V_73T_CELL_248"" from OLE DB provider "OraOLEDB.Oracle" for linked server "ASTUE". The specified table or view does not exist or contains errors.


Право select на представление дано.

Экспериментальным путем было выяснено, что не отрабатывают стандартные функции oracle, которые зашиты в представлении, такие как to_date, +, -, *.

В чем может быть дело ?

Проблема может быть в том, что пользователю, под которым происходит коннект к Ораклу не хватает прав на объекты схемы RSDU2CLARH.
31 окт 16, 09:26    [19840174]     Ответить | Цитировать Сообщить модератору
 Re: linked server с oracle  [new]
Guest9796857
Guest
SQL2008
Проблема может быть в том, что пользователю, под которым происходит коннект к Ораклу не хватает прав на объекты схемы RSDU2CLARH.

C правами все нормально

Если использовать в представлении к примеру:

select to_date(sysdate-1,'DD.MM.RR') from dual;

Не выполняется

А вот этот без кавычек выполняется с теми же самыми правами
select to_date(sysdate-1) from dual;
31 окт 16, 09:35    [19840208]     Ответить | Цитировать Сообщить модератору
 Re: linked server с oracle  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8815
Guest9796857,

RR - это что?
sysdate почему для to_date?

Вам нужен форум по Oracle на самом деле, а не этот.
31 окт 16, 11:13    [19840621]     Ответить | Цитировать Сообщить модератору
 Re: linked server с oracle  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Guest9796857
SQL2008
Проблема может быть в том, что пользователю, под которым происходит коннект к Ораклу не хватает прав на объекты схемы RSDU2CLARH.

C правами все нормально

Если использовать в представлении к примеру:

select to_date(sysdate-1,'DD.MM.RR') from dual;

Не выполняется

А вот этот без кавычек выполняется с теми же самыми правами
select to_date(sysdate-1) from dual;

По моему опыту работы с Oracle могу сказать, что на это влияет установка языка по умолчанию на сервере, откуда запускается процесс.
И почему такой странный формат 'DD.MM.RR'?
Может быть вы хотели написать DD.mm.YY ?
31 окт 16, 12:38    [19841241]     Ответить | Цитировать Сообщить модератору
 Re: linked server с oracle  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Покажите, что возвращает
select sysdate-1 from dual;
31 окт 16, 12:39    [19841254]     Ответить | Цитировать Сообщить модератору
 Re: linked server с oracle  [new]
Guest9796857
Guest
SQL2008
Покажите, что возвращает
select sysdate-1 from dual;


При выполнении запроса в oracle
31.10.2016 8:21:48


При выполнении запроса в mssql, вызовом вьюшки с рассматриваемым запросом

016-10-31 08:32:16.0000000

По поводу языка, на линуксовом сервере oracle стоит English (US)
Сам oracle работает с настройкой NLS_LANG= RUSSIAN_CIS.CL8MSWIN1251
1 ноя 16, 04:47    [19844304]     Ответить | Цитировать Сообщить модератору
 Re: linked server с oracle  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 942
Простите, а зачем применять преобразование к формату даты того, что и так имеет формат даты?
to_date(sysdate-1,'DD.MM.RR') - это масло масляное.
sysdate -> date, implicit cast -> date to char, explicit cast -> char to date
1 ноя 16, 18:21    [19847735]     Ответить | Цитировать Сообщить модератору
 Re: linked server с oracle  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 942
Руслан Дамирович
Простите, а зачем применять преобразование к формату даты того, что и так имеет формат даты?
to_date(sysdate-1,'DD.MM.RR') - это масло масляное.
sysdate -> date, implicit cast -> date to char, explicit cast -> char to date

Ну и очевидно, что implicit cast -> date to char на выходе дает то, что 'DD.MM.RR' не распознает, как валидную дату
1 ноя 16, 18:25    [19847745]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить