![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
Агрох |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.4.2013 Где: Москва Репутация: нет Всего: 6 |
Есть две базы, одна на MS SQL, вторая на Oracle.
В MS SQL настроен связанный сервер - Oracle. Нужно выполнить запрос вида:
Подскажите, как организовать сиё чудо. В таком виде оно условно говоря работает, только я ни разу не дождался результата. Слишком долго. Видимо пытается выгрузить сначала всю таблицу из Oracle, а потом уже выполняет запрос. Знаю про такую хорошую штуку, как:
Но пока не могу сообразить, можно ли это как то приспособить к решению задачи. Разве что через:
Это сообщение отредактировал(а) Агрох - 4.8.2014, 17:06 --------------------
Putin here, Putin there, Putin almost everywhere! |
||||||
|
|||||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20580 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
А как ты себе представляешь выполнение этого запроса иначе? Сперва определись, как именно ты собираешься выполнять запрос именно с точки зрения передачи данных между серверами. Вариантов немного. Первый - выгрести к себе Oracle таблицу и затем отобрать нужное, собсно этот вариант у тебя уже реализован. Второй - это получить набор записей подзапроса на MS SQL, передать его Oracle для выполнения основного запроса и возврата данных. Ну и промежуточные вроде бы - но на таком простом тексте они не просматриваются. Так что либо первое, либо второе. Что взять - вообще зависит от того, сколько в том и в другом случае передавать связанному серверу. В первом случае это вся таблица EVENTS. Во втором - это набор данных подзапроса плюс итоговый набор данных. В каком варианте меньше, тот и выбирай. Но ежели судить по названиям таблиц - на Oracle таблица офигенная, да ещё частоизменяемая, а на MS SQL более-менее статическая, да и записей не так много. Посему второй вариант скорее всего более разумен. Правда, при этом придётся не только Oracle делать связанным на MS SQL, но и наоборот. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Агрох |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.4.2013 Где: Москва Репутация: нет Всего: 6 |
Никак. Подобные задачи ранее не выполнял.
Слишком долго выполняется.
Воот. Пробовал записывать данные из MS SQL запроса во временную таблицу на сервере Oracle, но ни это:
ни более прямое:
эффекта не возымели. Видимо надо либо как то по другому настраивать связь между серверами, либо где то разрешения не прописаны, либо что то ещё. Можете подсказать, куда копать дальше? Добавлено через 56 секунд
А зачем? --------------------
Putin here, Putin there, Putin almost everywhere! |
||||||||||
|
|||||||||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20580 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Да вот как раз затем, чобы не гнать данные в Оракл в статическую таблицу. Чтобы делать что-то вроде
Добавлено через 3 минуты и 12 секунд Итог. MS SQL обращается к Ораклу через openquery, передавая ему текст запроса. Оракл его начинает выполнять. Для его выполнения он должен обратиться обратно к MS SQL своим openquery, передавая текст требуемого подзапроса. MS SQL принимает текст подзапроса, выполняет, отправляет результат Ораклу. Тот выполняет запрос, отправляет результат на MS SQL. Всё. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Агрох |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.4.2013 Где: Москва Репутация: нет Всего: 6 |
Akina, спасибо. Попробую этот вариант.
--------------------
Putin here, Putin there, Putin almost everywhere! |
|||
|
||||
Агрох |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.4.2013 Где: Москва Репутация: нет Всего: 6 |
Кстати ошибся. Всё таки делал. Если оба сервера MS SQL то аналогичный запрос выполняется, по времени, так, как если бы это был один сервер. --------------------
Putin here, Putin there, Putin almost everywhere! |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20580 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Я вообще-то имел в виду процесс с точки зрения передачи массивов данных - что именно, куда именно, по чьей именно инициативе.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Агрох |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.4.2013 Где: Москва Репутация: нет Всего: 6 |
Пока нет доступа к настройкам сервера с Oracle, хочу спросить: почему я не могу из под mssql добавлять данные во временную таблицу oracle?
или
Это сообщение отредактировал(а) Агрох - 5.8.2014, 13:53 --------------------
Putin here, Putin there, Putin almost everywhere! |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20580 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Не понял... это MS SQL отказывается записывать данные, или всё-таки Оракл? разберись... ну хотя бы по сообщениям об ошибках.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Агрох |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.4.2013 Где: Москва Репутация: нет Всего: 6 |
Сообщений об ошибках нет. MS SQL пишет "Обработано NNNN строк", т.е. свою часть MS SQL выполняет исправно. Но таблица в Oracle остаётся пустой.
Добавлено через 55 секунд Может лучше в разделе ораклистов спросить? --------------------
Putin here, Putin there, Putin almost everywhere! |
|||
|
||||
Агрох |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.4.2013 Где: Москва Репутация: нет Всего: 6 |
Понял свой косяк. Таблица ж временная.
![]()
Сама таблица остаётся, когда завершается транзакция, а вот все данные из неё подтираются. Думаю сделать реальную "временную"таблицу, которую буду дропать после использования. --------------------
Putin here, Putin there, Putin almost everywhere! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "MS SQL" | |
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS SQL Server | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |