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

Откуда:
Сообщений: 15
Добрый день!

Есть 2 разные системы - одна на MSSQL2005, вторая на Oracle 11g. Разработка доступна только на MSSQL2005. Нужно ежедневно перекачивать около 100.000 записей из Oracle в MSSQL и для каждой записи вызывать из Oracle функцию с out-параметрами.
Вижу 2 пути:
1) Настроить на MSSQL2005 linked server Oracle. Написать в MSSQL2005 хранимую процедуру, которая делает select из oracle, а затем пробешается курсором по результатам и вызывает функцию из oracle для каждой записи.
2) Написать внешний скрипт, например на javascript, который делает запрос к oracle, затем перекачивает записи в MSSQL. А затем пробегает вызывает для каждой записи функцию из oracle (не через linked server, а через oracle client).

Первый способ быстрее, но опасней - встречались сообщения, что MSSQL в каких-то случаях может свалиться. Вот например - SQL Server service crashes when you run an Oracle linked server query

У кого есть реальный опыт. Так ли страшен linked server oracle ?
18 май 15, 07:43    [17653333]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить функцию Oracle - лучше через Linked Server Oracle или через внешний скрипт ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Написать процедуру на Оракле, которая выполнит все, что нужно и выдаст нужный набор записей.
Процедуру эту использовать в SSIS как источник данных
18 май 15, 08:14    [17653388]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить функцию Oracle - лучше через Linked Server Oracle или через внешний скрипт ?  [new]
f_ase
Member

Откуда:
Сообщений: 15
Oracle дорабатывать нет возможности - можно пользоваться только тем, что есть.
18 май 15, 08:23    [17653416]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить функцию Oracle - лучше через Linked Server Oracle или через внешний скрипт ?  [new]
Glory
Member

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

Тогда зачем вы спрашиваете про лучшее решение ?
Гонять данные туда-сюда это не лучшее решение
18 май 15, 08:24    [17653423]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить функцию Oracle - лучше через Linked Server Oracle или через внешний скрипт ?  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
А не проще ли
f_ase
2) Написать внешний скрипт, например на javascript, который делает запрос к oracle, затем перекачивает записи в MSSQL. А затем пробегает вызывает для каждой записи функцию из oracle (не через linked server, а через oracle client).
?
18 май 15, 08:47    [17653495]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить функцию Oracle - лучше через Linked Server Oracle или через внешний скрипт ?  [new]
f_ase
Member

Откуда:
Сообщений: 15
Может некорректно написал - по выборке из Oracle, данные обрабатываются системой, которая работает с БД MSSQL2005, а затем по результатам нужно выполнить функцию из Oracle, чтобы записать результат работы назад в Oracle.

Oracle - принадлежит совсем другому департаменту, доработать ее нет возможности. Все, что они нам дают - это view, и функция, которая присваивает результат выполнения для каждой записи.

Мы можем доработать нашу систему и нашу БД - MSSQL. Если делать через linked server, боюсь за отказоустойчивость нашего MSSQL. Но через внешний скрипт тоже делать не хочется, т.к. будет медленнее.
18 май 15, 09:45    [17653781]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить функцию Oracle - лучше через Linked Server Oracle или через внешний скрипт ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
f_ase
Может некорректно написал - по выборке из Oracle, данные обрабатываются системой, которая работает с БД MSSQL2005, а затем по результатам нужно выполнить функцию из Oracle, чтобы записать результат работы назад в Oracle.

И зачем два раза обрабатывать один набор то ?
Читаешь запись из Оракла - запускаешь функцию в Оракле - пишешь запись в MSSQL
И все это в "внешний скрипт, например на javascript,"
18 май 15, 09:48    [17653795]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить функцию Oracle - лучше через Linked Server Oracle или через внешний скрипт ?  [new]
f_ase
Member

Откуда:
Сообщений: 15
Так не получится - система, которая обрабатывает записи не умеет работать с Oracl-ом, она работает только с MSSQL.
18 май 15, 11:29    [17654435]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить функцию Oracle - лучше через Linked Server Oracle или через внешний скрипт ?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
f_ase, причем тут это - ресь идет о прослойке, напишите свое приложение, которое будет переносить данные с оракла на сиквел.
18 май 15, 11:58    [17654599]     Ответить | Цитировать Сообщить модератору
 Re: Выполнить функцию Oracle - лучше через Linked Server Oracle или через внешний скрипт ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
f_ase
Так не получится - система, которая обрабатывает записи не умеет работать с Oracl-ом, она работает только с MSSQL.

Как же тогда собирались писать "внешний скрипт, например на javascript, который делает запрос к oracle" ?
18 май 15, 12:18    [17654733]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить