![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Доступ из БД1 в БД2 одного коннекта [D7, IB7.5]
RomanH © (2006-04-14 10:55:00)Добрый день.Имеется подключение к серверу Interbase, где зарегестрированны две БД alias
|
Databases
|
BD1.
table11
BD2.
table21
не могу сообразить как в хранимой процедуре, которая находится в BD1 написать SQL-запрос, чтобы данные из table1 записывались в table2.
делаю так:
insert into "BD2:table21"
select * from table11 where Field=0
Sergey13 (2006-04-14 13:52:00) [1]2[16] RomanH © (14.04.06 13:17)
>А то что я пока придумал не привлекательно
Тебе шашечки или ехать?
(с) старый анекдот
RomanH (2006-04-14 13:17:00) [2]Как можно когда два разных IBDataSet используют разные IBTransaction, перекинуть данные из одного IBDataSet в другой IBDataSet.А то что я пока придумал не привлекательно
IBDataSet.Open;
while not IBDataSet.EOF do
begin
IBDataSet.FieldValue['AAA']:=IBDataSet1.FieldValue['AAA']
.................
.................
IBDataSet.Next;
end
RomanH (2006-04-14 13:03:00) [3]
> Johnmen ©
Хорошо послушаюсь вашему совету.Я просто не знал что можно сделать как посоветовал ANB.
Johnmen (2006-04-14 12:58:00) [4]
> RomanH © (14.04.06 12:48) [13]
Мой тебе совет - ты сначала с терминологией разберись. А потом и вопросы можно задавать.
RomanH (2006-04-14 12:48:00) [5]
> Desdechado ©
На удаленой базе находится БД1(Table1.gdb) где хранятся данные , существует необходимость иногда реплицировать эту БД1. Для того чтобы доставить измененые или добавленные данные из БД1 я хочу использовать так называемую транспортировочную таблицу TransportTable1.gdb, что бы всю table1.gdb не везти.
Johnmen (2006-04-14 12:42:00) [6]
> Desdechado © (14.04.06 12:19) [9]
> Ой, зря ты такое сказал....
А это не я сказал, а Кузьменко. На своём ibase.ru.
Виталий Панасенко (2006-04-14 12:29:00) [7]http://www.sql.ru/forum/actualthread.aspx?tid=182592
Виталий Панасенко (2006-04-14 12:22:00) [8]
> Johnmen © (14.04.06 12:09) [8]
>
> > Виталий Панасенко (14.04.06 12:04) [7]
>
>
> Это несколько из другой оперы (не путать с Opera :))
Не спорю, может из другой. Помню, был пример для FIBPlus. Но подключений было 2
Desdechado (2006-04-14 12:19:00) [9]Sergey13 © (14.04.06 11:40) [4]
Это решение рабочее, нужно только точно знать, что во второй БД EXTERNAL TABLE никто не юзал, а то сервер заблокирует доступ к ней извне.
Автору
Что за задача такая? Может, можно обойтись чем-то попроще?
Johnmen © (14.04.06 11:12) [2]
> пиши свою UDF, которая будет коннектиться ко второй БД
Ой, зря ты такое сказал. Можно, конечно, попробовать. Но ведь UDF предназначены для очень быстрых операций, а не для взаимодействия с другими БД. А вдруг кто-то туда еще интерфейсные вещи вставит? Можно ведь физически. Только серверу больно будет....
Johnmen (2006-04-14 12:09:00) [10]
> Виталий Панасенко (14.04.06 12:04) [7]
Это несколько из другой оперы (не путать с Opera :))
Виталий Панасенко (2006-04-14 12:04:00) [11]Вообще-то, что-то подобное возможно.. Т.к. IB(FB ?) поддерживает двухфазный коммит - подтверждаются транзакции на разных серверах. т.е. можно обращатся к нескольким серверам одновременно. В IBConsole даже есть(давно смотрел на консоль) возможность работы с транзакциямиями "in limbo", "подвисших". Определить, что с ними делать:подтверждать/откатывать
sniknik (2006-04-14 11:53:00) [12]> IB - не оракл.
также не mssql не access и даже не dbase... при чем тут вообще оракл?
ANB (2006-04-14 11:48:00) [13]
> RomanH © (14.04.06 10:55)
IB - не оракл.
Сделай 2 коннекта и перегони таблицу из базы в базу через клиента.
Иногда - самое простое решение.
Sergey13 (2006-04-14 11:40:00) [14]2[3] RomanH © (14.04.06 11:37)
Я сам не пробовал, но вроде можно попробовать с внешними таблицами, когда Table21 будет в обеих базах.
RomanH (2006-04-14 11:37:00) [15]Вопрос, а если table21 будет находится в BD1 .Я создаю нужную хранимую прцедуру, записываю данные из table11 в Table21, при помощи ее. А затем можно будет извлечь table21 в BD2. Существуют какие нибудь методы.
Johnmen (2006-04-14 11:12:00) [16]Считай, что никак.
Если не хочешь считать, то пиши свою UDF, которая будет коннектиться ко второй БД и возвращать необходимые данные...
А то, что ты привёл, это чистое БДЕ. К тому же с ошибками написал...
sniknik (2006-04-14 11:08:00) [17]IB гетерогенные запросы вроде бы не поддерживает (ранние версии с теми которыми сталкивался уж точно, 7,5 не в курсе), т.что в хранимой процедуре это не пройдет.
а то что ты делаеш это использование "гетерогенности" на уровне BDE, т.е. не в сервере а уже на клиенте. (от BDE в принципе лучше бы отказаться)
имхо. могу ошибиться (процентов 5% даю что ошибся ;о))).