powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Интеграция Firebird и MSSQL Server
55 сообщений из 55, показаны все 3 страниц
Интеграция Firebird и MSSQL Server
    #39382894
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
В ходе работы на проектом возникла следующая задача. В процессе выполнения хранимой процедуры в БД Firebird 2.5 x64 необходимо следующее.
1. Выполнить хранимую процедуру в БД MSSQL Server 2008 и возвращаемый ей набор данных положить во временную таблицу Firebird либо в MemoryDataset (этот вариант предпочтительнее с точки зрения быстродействия). Эти данные должны быть доступны только внутри этого вызова хранимой процедуры Firebird и после завершения занимаемая им память должна быть освобождена.
2. В случае MemoryDataset произвести один или несколько проходов по этому датасету для формирования итогового набора данных и его возврата (suspend) в клиентское приложение.

Вариант с подключением к MSSQL через компоненты FireDAC или ADO отпадает так как стоит сверх-задача сделать получение данных из MSSQL прозрачным с точки зрения клиентского приложения, которое "заточено" на работу с Firebird.

Прошу поделиться мнениями, идеями и ссылками. Ответ "не возможно" не принимается. Позади Сибирь. http://www.sql.ru/forum/images/biggrin.gif
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382908
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очередное "как бы постирать бельишко, но только без мыла и порошка"

Пиши костыль, который перед обращением к Firebird будет выполнять предварительную функцию заливки туда данных.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382912
Товарищ старший сержант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
udr?
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382915
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищ старший сержант,
Разрешите доложить. я знаю только UDF.
Что есть UDR и где по него грамотно написано?
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382919
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
po-stroyka,

Не обращай внимания, он не читатель. Вторую строку до конца не осилил.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382922
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Навскидку

1. 3 UDF:
- DBConnectAndExecQuery(Addr): QueryPtr
- QueryGetRowAndNext(QueryPtr): Field1, ..., FieldN
- CloseQueryAndDB(QueryPtr)

Из QueryGetRowAndNext запихиваем во временную таблицу, там крутим, выдаем клиенту, очищаем.
Минусы - фиксированный набор полей в UDF, что означает пересборку при изменении. Либо придется мутить с упаковкой-распаковкой, что на SQL не очень приятная задача.

2. Приложение-посредник и 1 UDF.
UDF при вызове дергает приложение (через пайпы, сокеты и т.п.), приложение перекачивает данные, ХП их обрабатывает.
Но:
- ХП должна как-то подождать, пока приложение перекачает данные (можно обеспечить внутри UDF)
- ХП должна увидеть данные внутри уже начатой транзакции (достигается параметрами транзакции)
- Клиент должен быть строго один; либо записывать данные в таблицу вместе с ИД клиента.

3. Элементарно репликация в FB.
Минусы - возможно будет много лишних операций. Зато наиболее надежно.

4. (возможно, если UDR подерживает передачу текущего соединения) Переход на ФБ 3 и закачка данных из UDR непосредственно во временную таблицу (вариант №1, но более краткий и устойчивый).
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382925
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryВторую строку до конца не осилил.
Во второй строке не описана ситуация с временной таблицей.

Вообще не понятно, что ТС имеет в виду под memorydataset.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382926
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanВо второй строке не описана ситуация с временной таблицей.
Прошу прощения, я спутал вторую строку со вторым пунктом.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382927
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WildSery,
все необходимые данные и так уже находятся в БД MSSQL и меняются там в реальном времени.
собственно по этому и весь этот сыр бор.
в таком ключе не понимаю что вы подразумеваете под костылем? утилите по заливке изменений из MSSQL в Firebird?
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382930
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принципе, вариант №1 можно ужать до одной универсальной UDF. Если указатель на запрос в параметре пуст, она коннектится к базе и создает объект. Когда же данные полностью прочитаны, можно сразу удалять объект и разрывать соединение.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382934
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Василий №2Навскидку

1. 3 UDF:
- DBConnectAndExecQuery(Addr): QueryPtr
- QueryGetRowAndNext(QueryPtr): Field1, ..., FieldN
- CloseQueryAndDB(QueryPtr)

Из QueryGetRowAndNext запихиваем во временную таблицу, там крутим, выдаем клиенту, очищаем.
Минусы - фиксированный набор полей в UDF, что означает пересборку при изменении. Либо придется мутить с упаковкой-распаковкой, что на SQL не очень приятная задача.

2. Приложение-посредник и 1 UDF.
UDF при вызове дергает приложение (через пайпы, сокеты и т.п.), приложение перекачивает данные, ХП их обрабатывает.
Но:
- ХП должна как-то подождать, пока приложение перекачает данные (можно обеспечить внутри UDF)
- ХП должна увидеть данные внутри уже начатой транзакции (достигается параметрами транзакции)
- Клиент должен быть строго один; либо записывать данные в таблицу вместе с ИД клиента.

3. Элементарно репликация в FB.
Минусы - возможно будет много лишних операций. Зато наиболее надежно.

4. (возможно, если UDR подерживает передачу текущего соединения) Переход на ФБ 3 и закачка данных из UDR непосредственно во временную таблицу (вариант №1, но более краткий и устойчивый).

Спасибо
Вот первый вариант мне более всего нравится исходя из того что данные в БД MSSQL меняются в реальном времени.
Есть несколько вопросов.
1. Что есть параметры Addr и QueryPtr?
2. При написании UDF в Delphi 2010 имеем 32-битную DLL. Заведется ли на Firebird 2.5 x64?
3. А если так QueryGetIntValue(QueryPtr, 'FieldName'), QueryGetStringValue(QueryPtr, 'FieldName') и т. д? Естественно с предварительно проверкой на тип данных в поле. Ведь типов данных ограниченное количество в отличие от количества полей.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382938
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
po-stroykaВот первый вариант мне более всего нравится исходя из того что данные в БД MSSQL меняются в реальном времени.
Mssql умеет работать с другими субд, вот в нем и можно это всё провернуть.

Или результат этой катавасии не должен оставлять каких-либо следов от слова "совсем"?
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382961
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
po-stroykaЕсть несколько вопросов.
1. Что есть параметры Addr и QueryPtr?
2. При написании UDF в Delphi 2010 имеем 32-битную DLL. Заведется ли на Firebird 2.5 x64?
3. А если так QueryGetIntValue(QueryPtr, 'FieldName'), QueryGetStringValue(QueryPtr, 'FieldName') и т. д? Естественно с предварительно проверкой на тип данных в поле. Ведь типов данных ограниченное количество в отличие от количества полей.
1. Addr - строка подключения к MSSQL, можно также встроить в DLL либо читать DLL-ю из конфига, не принципиально. QueryPtr - указатель на созданный внутри DLL объект запроса. Можно и глобальной переменной внутри DLL сделать, но это менее устойчиво (разве что объявить как threadvar).
2. Конечно нет, разрядность должна совпадать. Либо брать Дельфи поновее, либо Lazarus, либо другие языки.
3. Как вариант, хотя тогда количество UDF будет больше, плюс весь процесс замедлится (правда, не так уж сильно). Зато более универсально, да.

Если MSSQL умеет взаимодействовать с FB, то еще вариант - UDF дергает MSSQL, тот заливает данные в FB с ИД текущего FB-подключения, ХП в FB дальше с ними работает. Транзакция клиента в FB при этом д.б. read_committed.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382974
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Василий №2po-stroykaЕсть несколько вопросов.
1. Что есть параметры Addr и QueryPtr?
2. При написании UDF в Delphi 2010 имеем 32-битную DLL. Заведется ли на Firebird 2.5 x64?
3. А если так QueryGetIntValue(QueryPtr, 'FieldName'), QueryGetStringValue(QueryPtr, 'FieldName') и т. д? Естественно с предварительно проверкой на тип данных в поле. Ведь типов данных ограниченное количество в отличие от количества полей.
1. Addr - строка подключения к MSSQL, можно также встроить в DLL либо читать DLL-ю из конфига, не принципиально. QueryPtr - указатель на созданный внутри DLL объект запроса. Можно и глобальной переменной внутри DLL сделать, но это менее устойчиво (разве что объявить как threadvar).
2. Конечно нет, разрядность должна совпадать. Либо брать Дельфи поновее, либо Lazarus, либо другие языки.
3. Как вариант, хотя тогда количество UDF будет больше, плюс весь процесс замедлится (правда, не так уж сильно). Зато более универсально, да.

Если MSSQL умеет взаимодействовать с FB, то еще вариант - UDF дергает MSSQL, тот заливает данные в FB с ИД текущего FB-подключения, ХП в FB дальше с ними работает. Транзакция клиента в FB при этом д.б. read_committed.

Огромное спасибо.
Сам думал про что то подобное. Благодаря Вам многое встало на нужные полочки.
Готовой DLL-кой поделюсь.
>>> 2. Конечно нет, разрядность должна совпадать. Либо брать Дельфи поновее, либо Lazarus, либо другие языки.
Дельфи поновее надо будет опять покупать. Возможно придется откатиться на Firebird x32. Или откатка не поможет?
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382979
Filippov Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
po-stroyka,
а там без процедуры никак?
Если бы переписать ее во VIEW, то там бы Linked Sever -а бы хватило.
С минимальным уровнем шаманств.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382985
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Filippov Dmitrypo-stroyka,
а там без процедуры никак?
Если бы переписать ее во VIEW, то там бы Linked Sever -а бы хватило.
С минимальным уровнем шаманств.

Насколько я понимаю Linked Sever - это для подключения из MSSQL к Firebird-у. А мне нужно наоборот и чтобы сама хранимая процедура Firebird инициировала подключение и получала данные из MSSQL.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382989
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
po-stroyka,

по уму надо переходить на FB 3 и писать UDR процедуру.
А передача указателей через UDF это полный изврат
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39382993
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисpo-stroyka,

по уму надо переходить на FB 3 и писать UDR процедуру.
А передача указателей через UDF это полный изврат

1. Backup на v2.5 и restore v3 БД нужно?
2. Для UDR имеет значение разрядность x86/x64?
3. Можно ссылочку чтобы было грамотно написано про написание UDR?
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383007
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по теме:
постановка задачи - говно.
советы как её решить через жопу, тоже.

ТС, пересмотри задачу, чтобы для её решения
не приходилось изменять всемирный закон тяготения.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383017
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
po-stroyka,

1. Backup на v2.5 и restore v3 БД нужно? - да (возможно придётся подкручивать)
2. Для UDR имеет значение разрядность x86/x64? - да, если только udr не написана на Java
3. Можно ссылочку чтобы было грамотно написано про написание UDR?
нет пока никаких ссылок. Есть пример простейшей UDR на Delphi https://github.com/asfernandes/fbstuff/tree/master/src
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383054
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящийпо теме:
постановка задачи - говно.
советы как её решить через жопу, тоже.

ТС, пересмотри задачу, чтобы для её решения
не приходилось изменять всемирный закон тяготения.



Благодарю Вас за мнение. Будете еще раз проходить мимо, проходите.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383055
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисpo-stroyka,

1. Backup на v2.5 и restore v3 БД нужно? - да (возможно придётся подкручивать)
2. Для UDR имеет значение разрядность x86/x64? - да, если только udr не написана на Java
3. Можно ссылочку чтобы было грамотно написано про написание UDR?
нет пока никаких ссылок. Есть пример простейшей UDR на Delphi https://github.com/asfernandes/fbstuff/tree/master/src

Благодарю Вас за ценные советы. Будете проходить мимо, заходите на огонек :-)
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383056
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийпостановка задачи - говно.
советы как её решить через жопу, тоже.+1

Вариант "все данные в базе ФБ" не рассматривается? актуальность поддерживать репликатором.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383084
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
po-stroykaОгромное спасибо.
Сам думал про что то подобное. Благодаря Вам многое встало на нужные полочки.
Готовой DLL-кой поделюсь.
>>> 2. Конечно нет, разрядность должна совпадать. Либо брать Дельфи поновее, либо Lazarus, либо другие языки.
Дельфи поновее надо будет опять покупать. Возможно придется откатиться на Firebird x32. Или откатка не поможет?
Пожалуйста).
Поскольку кода будет всего ничего, то можно заюзать Lazarus даже без особого вникания. Сервер всё-таки лучше иметь 64-битный.
Симонов ДенисА передача указателей через UDF это полный изврат
Никакого изврата. Можно считать его "хэндлом объекта запроса". Для FB это будет черный ящик, нужный только в DLL для обеспечения многопоточного использования.
Кстати, ТС, про IsMultithread в DLL не забудь.
Ivan_PisarevskyВариант "все данные в базе ФБ" не рассматривается? актуальность поддерживать репликатором.
Предложил это, но судя по описанию, исходная БД интенсивно изменяется. Репликация, имхо, повлечет введение дополнительного инструмента и большую ненужную в данном применении нагрузку.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383100
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyВариант "все данные в базе ФБ" не рассматривается?

Ну, у них же там "данные в MS SQL меняются в реальном времени". Очевидно, что это делается
приложением ТСа, который смог заставить его работать только с MS SQL.

Почему нельзя переточить "приложение заточенное на Firebird" под MS SQL - непонятно,
вероятно, оно купленное без исходников.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383114
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_PisarevskyМимопроходящийпостановка задачи - говно.
советы как её решить через жопу, тоже.+1

Вариант "все данные в базе ФБ" не рассматривается? актуальность поддерживать репликатором.

Возможен только теоретически. А так не рассматривается. Данные в БД MSSQL меняются в реальном времени и в большом количестве. А еще есть закон сохранения энергии: если есть Linked Sever (для обращения к Firebird-у из MSSQL), то должен быть и обратный путь :-) Плюс к эта разработка может быть полезная в других проектах. Да и еще одна звездочка на борту еще ни одному программисту не повредила. :-)
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383117
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Po-stroyka!
You wrote on 12 января 2017 г. 13:31:38:

Po-stroyka> и еще одна звездочка на борту еще ни одному программисту не повредила
ты сильно недооцениваешь вредное влияние ментального онанизма на неокрепший организм
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383119
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
po-stroykaДа и еще одна звездочка на борту еще ни одному программисту не повредила. :-)
Не всегда черенок из задницы равняется звездочке на борту.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383120
Товарищ старший сержант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
po-stroykaIvan_Pisarevskyпропущено...
+1

Вариант "все данные в базе ФБ" не рассматривается? актуальность поддерживать репликатором.

Возможен только теоретически. А так не рассматривается. Данные в БД MSSQL меняются в реальном времени и в большом количестве. А еще есть закон сохранения энергии: если есть Linked Sever (для обращения к Firebird-у из MSSQL), то должен быть и обратный путь :-) Плюс к эта разработка может быть полезная в других проектах. Да и еще одна звездочка на борту еще ни одному программисту не повредила. :-)

А не хочешь, чтобы MS SQL Server сам наполнял нужные таблички в базе FireBird?
С помощью, например http://www.ibprovider.com/rus/
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383123
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadmanWildSeryВторую строку до конца не осилил.
Во второй строке не описана ситуация с временной таблицей.

Вообще не понятно, что ТС имеет в виду под memorydataset.

memorydataset - аналог временной таблицы, хранящейся в оперативной памяти (для оперативности, ведь дисковая подсистема всяко тормознее). возможно не лучше решение, но лет 10 назад встречал что то подобное. только тогда исходников не было, а было только описание для разработчика с описанием где, что и как хранится. документатор хороший попался видимо.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383125
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
po-stroykamemorydataset - аналог временной таблицы, хранящейся в оперативной памяти (для оперативности, ведь дисковая подсистема всяко тормознее). возможно не лучше решение, но лет 10 назад встречал что то подобное. только тогда исходников не было, а было только описание для разработчика с описанием где, что и как хранится. документатор хороший попался видимо.
То есть этот датасет не имеет никакого отношения ни к MS SQL, ни к Firebird?
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383135
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovIvan_PisarevskyВариант "все данные в базе ФБ" не рассматривается?

Ну, у них же там "данные в MS SQL меняются в реальном времени". Очевидно, что это делается
приложением ТСа, который смог заставить его работать только с MS SQL.

Почему нельзя переточить "приложение заточенное на Firebird" под MS SQL - непонятно,
вероятно, оно купленное без исходников.


На самом деле есть два приложения.
1. Работает с MSSQL, исходников нет и не будет, переточка к Firebird невозможна.
2. Работает c Firebird, исходники есть и использует стандартный набор FIB+Ehlib+FastReport, плюс в нем много чего уже наработано и БД в 200 таблиц и 300 ХП. Переточка к MSSQL невозможна, но достаточно трудоемка с моей точки зрения.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383137
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МимопроходящийHello, Po-stroyka!
You wrote on 12 января 2017 г. 13:31:38:

Po-stroyka> и еще одна звездочка на борту еще ни одному программисту не повредила
ты сильно недооцениваешь вредное влияние ментального онанизма на неокрепший организм


не в первой.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383138
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadmanpo-stroykaДа и еще одна звездочка на борту еще ни одному программисту не повредила. :-)
Не всегда черенок из задницы равняется звездочке на борту.

палочка + звездочка = волшебная палочка.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383143
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadmanpo-stroykamemorydataset - аналог временной таблицы, хранящейся в оперативной памяти (для оперативности, ведь дисковая подсистема всяко тормознее). возможно не лучше решение, но лет 10 назад встречал что то подобное. только тогда исходников не было, а было только описание для разработчика с описанием где, что и как хранится. документатор хороший попался видимо.
То есть этот датасет не имеет никакого отношения ни к MS SQL, ни к Firebird?

именно. данные получаем из mssql, кладем в memorydataset и закрываем соединение с mssql. а дальше с помощью udf-ок (который видимо тоже придется разработать) работаем с memorydataset внутри хранимой процедуры.

например так.
dsfirst(handler);
while (not dseof(handler)) do
begin
i = dsgetintvalue('fieldname'); --для целочисленных полей
s = dsgetstringvalue('fieldname'); --для строковых полей
dsnext(handler);
end

только тут еще больше UDF-ок накатать придется.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383145
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
po-stroykawadmanпропущено...

То есть этот датасет не имеет никакого отношения ни к MS SQL, ни к Firebird?

именно. данные получаем из mssql, кладем в memorydataset и закрываем соединение с mssql. а дальше с помощью udf-ок (который видимо тоже придется разработать) работаем с memorydataset внутри хранимой процедуры.

например так.
dsfirst(handler);
while (not dseof(handler)) do
begin
i = dsgetintvalue('fieldname'); --для целочисленных полей
s = dsgetstringvalue('fieldname'); --для строковых полей
dsnext(handler);
end

только тут еще больше UDF-ок накатать придется.

что скажете, товарищи?
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383152
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Po-stroyka!
You wrote on 12 января 2017 г. 13:57:16:

Po-stroyka> что скажете, товарищи?
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383169
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МимопроходящийHello, Po-stroyka!
You wrote on 12 января 2017 г. 13:57:16:

Po-stroyka> что скажете, товарищи?

не помогает!
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383182
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
po-stroyka2. Работает c Firebird, исходники есть и использует стандартный набор
FIB+Ehlib+FastReport, плюс в нем много чего уже наработано и БД в 200 таблиц и 300 ХП.
Переточка к MSSQL невозможна, но достаточно трудоемка с моей точки зрения.

То, что ты пытаешься сделать, ещё более трудоёмко. Поэтому забудь и начинай перетачивать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383186
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
po-stroykaНа самом деле есть два приложения.
1. Работает с MSSQL, исходников нет и не будет, переточка к Firebird невозможна.
2. Работает c Firebird, исходники есть и использует стандартный набор FIB+Ehlib+FastReport, плюс в нем много чего уже наработано и БД в 200 таблиц и 300 ХП. Переточка к MSSQL невозможна, но достаточно трудоемка с моей точки зрения.
В свете сказанного разумнее бы впихнуть требуемое в само приложение. Если не хочется трогать кусок, читающий из ФБ, можно просто перед ним вызывать процедуру, которая бы перекачивала данные из МССКЛ в ФБ (встроенно или вызывая отдельную утилиту - не суть). Ну это как вариант. В общем-то, метод из UDF тоже будет работать, несмотря на потоки гнева со стороны здешних старожилов. Окромя вызывающей возмущение вышеупомянутых товарищей хитровыдрюченной методики, возражений в плане реализуемости и даже надежности я не нахожу. Судя по отсутствию указания конкретных минусов, данные товарищи также возразить по существу не могут.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383210
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
po-stroykaданные получаем из mssql, кладем в memorydataset GTT и закрываем соединение с mssql. а дальше с помощью udf-ок (который видимо тоже придется разработать) работаем с memorydataset GTT штатными механизмами ФБ внутри хранимой процедуры.поправ е л
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383217
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskyпоправел
Ну, раз аффтар признался, что исходники софтины, работающей с Firebird, есть, то можно
спокойно пропустить все этапы работы с GTT, а хранимую процедуру перенести в MS SQL,
откуда её и вызывать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383224
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovхранимую процедуру перенести в MS SQL,Ну мало ли, может решительно никто у них не умеет писать хранимки на М$SQL, а ФБшные так или иначе осилили. Может "политика партии" запрещает менять метаданные M$ базы. Слить простым селектом из дельфовой софтины некий список таблиц в ФБ задача из разряда курсовика обычного ВУЗа.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383247
Filippov Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
po-stroyka...
На самом деле есть два приложения.
1. Работает с MSSQL, исходников нет и не будет, переточка к Firebird невозможна.
2. Работает c Firebird, исходники есть и использует стандартный набор FIB+Ehlib+FastReport, плюс в нем много чего уже наработано и БД в 200 таблиц и 300 ХП. Переточка к MSSQL невозможна, но достаточно трудоемка с моей точки зрения.

А что мешает тогда вызывать хранимую процедуру MSSQL из Delphi, а результат ее работы пересылать через Linked Server в базу Firebird?
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383257
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решать с помощью UDF - ещё бОльшее извращение, чем реализовать тот же код заливки из MSSQL в GTT в самом приложении при получении данных.
Подсказка. Репликатор может заливать данные в Firebird почти в реальном времени.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383263
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Filippov DmitryА что мешает тогда вызывать хранимую процедуру MSSQL из Delphi, а результат ее работы
пересылать через Linked Server в базу Firebird?
Лично мне мешала бы полная бессмысленность такого действа: если я могу вызвать процедуру в
MS SQL, я могу и получить непосредственно от неё результат, не напрягая второй сервер.

И так в MS SQL нет ограничения на число баз. Не дают создать процедуру прямо в нужной базе
- создам под неё совсем новую базу и буду данные тянуть из первой. Там это делается просто.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383264
Filippov Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery,
на сколько я понял, 2 базы живут разными жизнями, а ТС нужен результат отработки именно конкретного расчета.
Про репликацию всех данных он и не говорил.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383275
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Filippov Dmitry,

А не надо всех, надо одну табличку, данные которой получаются из процедуры MSSQL.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383564
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_Pisarevskypo-stroykaданные получаем из mssql, кладем в memorydataset GTT и закрываем соединение с mssql. а дальше с помощью udf-ок (который видимо тоже придется разработать) работаем с memorydataset GTT штатными механизмами ФБ внутри хранимой процедуры.поправ е л

Обратимся к терминам.
1. Что есть GTT?
2. Что есть CT (видел в ранних сообщениях)?
Просветите пожалуйста.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383569
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovpo-stroyka2. Работает c Firebird, исходники есть и использует стандартный набор
FIB+Ehlib+FastReport, плюс в нем много чего уже наработано и БД в 200 таблиц и 300 ХП.
Переточка к MSSQL невозможна, но достаточно трудоемка с моей точки зрения.

То, что ты пытаешься сделать, ещё более трудоёмко. Поэтому забудь и начинай перетачивать.


Возможность менять структуру БД MSSQL отсутствует: злой админ и другие разработчики. Хранимую процедуру, которую нужно вызывать, также могут менять только эти же разработчики.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383576
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
po-stroyka,

GTT - Global Temporary Table

Что такое CT понятия не имею.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383578
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
po-stroykaЗдравствуйте.
В ходе работы на проектом возникла следующая задача. В процессе выполнения хранимой процедуры в БД Firebird 2.5 x64 необходимо следующее.
1. Выполнить хранимую процедуру в БД MSSQL Server 2008 и возвращаемый ей набор данных положить во временную таблицу Firebird либо в MemoryDataset (этот вариант предпочтительнее с точки зрения быстродействия). Эти данные должны быть доступны только внутри этого вызова хранимой процедуры Firebird и после завершения занимаемая им память должна быть освобождена.
2. В случае MemoryDataset произвести один или несколько проходов по этому датасету для формирования итогового набора данных и его возврата (suspend) в клиентское приложение.

Вариант с подключением к MSSQL через компоненты FireDAC или ADO отпадает так как стоит сверх-задача сделать получение данных из MSSQL прозрачным с точки зрения клиентского приложения, которое "заточено" на работу с Firebird.

Прошу поделиться мнениями, идеями и ссылками. Ответ "не возможно" не принимается. Позади Сибирь. http://www.sql.ru/forum/images/biggrin.gif

Небольшое дополнение к условию задачи.
3. На основании данных, полученных из БД MSSQL, будут проанализированы данные хранящиеся в БД Firebird. Результаты этого анализа будут записаны в таблицу FB потому, что чтение этих данных будет неоднократным.
4. Предпочитаю выносить всю логику работы с данными на сторону сервера (в данном случае FB так как приложение уже заточено под него).

PS. Задача навеяна гетерогенными запросами в FB (это соответствует пункту 4 и делает работу с БД прозрачной для приложений).
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383580
po-stroyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисpo-stroyka,

GTT - Global Temporary Table

Что такое CT понятия не имею.

Спасибо.
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383608
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
po-stroykaВозможность менять структуру БД MSSQL отсутствует: злой админ и другие разработчики.
Хранимую процедуру, которую нужно вызывать, также могут менять только эти же разработчики.

Повторяю ещё раз, медленно: MS SQL позволяет создать любое количество БД. И обращаться из
хранимых процедур одной БД к данным и хранимым процедурам любой другой БД. В том числе - в
БД Firebird.

po-stroyka3. На основании данных, полученных из БД MSSQL, будут проанализированы данные хранящиеся в
БД Firebird. Результаты этого анализа будут записаны в таблицу FB потому, что чтение этих
данных будет неоднократным.

А теперь чуть-чуть смещаем акценты: на основании данных, полученных из БД MS SQL и данных,
полученных из БД Firebird производится анализ, результат которого записывается в таблицу
БД MS SQL потому, что чтение этого результата будет неоднократным. Теперь задача стала
гораздо тривиальнее, не правда ли?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Интеграция Firebird и MSSQL Server
    #39383918
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисpo-stroyka,
.........
3. Можно ссылочку чтобы было грамотно написано про написание UDR?
нет пока никаких ссылок. Есть пример простейшей UDR на Delphi https://github.com/asfernandes/fbstuff/tree/master/src

Firebird.SphinxClient
...
Рейтинг: 0 / 0
55 сообщений из 55, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Интеграция Firebird и MSSQL Server
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]