![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Шлюз для обмена данными между информационными системами [D5, MSSQL]
MakNik © (2005-06-02 15:04:00)Необходимо организовать обмен данными между двумя информационными системами. Обе работают на MSSQL (хотя возможен и вариант MSSQL<->dBase).
С этой целью в 1-й БД создано 7 таблиц следующей структуры:
Таблица Package:
------
ID
... (данные о пакете)
Таблица Data:
------
ID
ID_Package (ID пакета)
ID_Dict1 (ссылка на справочник Dict1)
ID_Dict2 (ссылка на справочник Dict2)
ID_Dict3 (ссылка на справочник Dict3)
ID_Dict4 (ссылка на справочник Dict4)
...(други данные)
Таблицы Dict1,Dict2,Dict3,Dict5:
------
ID
ID_Package (ID пакета)
...(данные)
Таблица Dict4:
------
ID
ID_Package (ID пакета)
ID_Dict5 (ссылка на справочник Dict5)
...(данные)
Имя и пользователь принимающего/отправляющего сервера и БД может меняться. Подскажите, пожалуйста, как организовать передачу данных во 2-ю БД так, чтобы обеспечить целостность всей транзакции? (есть мысль выбирать в приложении нужные данные, затем устанавливать конект через ADO и проходя по одной записи вставлять... но, как мне кажется, должен быть более рациональный путь...)
MakNik (2005-06-07 11:41:00) [1]Делаю как написано в хелпе:
SELECT * FROM OPENROWSET('SQLOLEDB','Srv1';'Admin';'Admin','SELECT * FROM DB1.dbo.Cards')
Ругается:
The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.
[OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator. ]
OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].
...подскажите, пожалуйста, чайнику как исправить ошибку?
Nikolay M. (2005-06-03 10:09:00) [2]
> Insert into [Server1Name].[DBName].[Package]
> Select * from [Server2Name].[DBName].[Package]
> where [Package].[id]=...
1) Читать в BOL про OPENROWSET, OPENDATASOURCE, OPENQUERY, linked-severs.
2) Изучать DTS.
MakNik (2005-06-03 09:43:00) [3]Хотелось бы сделать что-то типа:
Insert into [Server1Name].[DBName].[Package]
Select * from [Server2Name].[DBName].[Package]
where [Package].[id]=...
Но как типа таково реализовать с помощью компонентов АДО?
Nikolay M. (2005-06-02 18:01:00) [4]
> Подскажите, пожалуйста, как организовать передачу данных
> во 2-ю БД так, чтобы обеспечить целостность всей транзакции?
С помощью Distributed Transaction Coordinator, например.