Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.18;
Скачать: CL | DM;

Вниз

Шлюз для обмена данными между информационными системами   Найти похожие ветки 

 
MakNik   (2005-06-02 15:04) [0]

Необходимо организовать обмен данными между двумя информационными системами. Обе работают на 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 и проходя по одной записи вставлять... но, как мне кажется, должен быть более рациональный путь...)


 
Nikolay M. ©   (2005-06-02 18:01) [1]


>  Подскажите, пожалуйста, как организовать передачу данных
> во 2-ю БД так, чтобы обеспечить целостность всей транзакции?

С помощью Distributed Transaction Coordinator, например.


 
MakNik   (2005-06-03 09:43) [2]

Хотелось бы сделать что-то типа:
Insert into [Server1Name].[DBName].[Package]
Select * from [Server2Name].[DBName].[Package]
where [Package].[id]=...


Но как типа таково реализовать с помощью компонентов АДО?


 
Nikolay M. ©   (2005-06-03 10:09) [3]


> 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-07 11:41) [4]

Делаю как написано в хелпе:
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].


...подскажите, пожалуйста, чайнику как исправить ошибку?



Страницы: 1 вся ветка

Текущий архив: 2005.07.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.041 c
11-1102981296
thaddy
2004-12-14 02:41
2005.07.18
new website with KOL stuff


4-1116247125
KSN
2005-05-16 16:38
2005.07.18
запуск процесса


14-1118658811
Sergey Masloff
2005-06-13 14:33
2005.07.18
4 диска с собой на необитаемый остров ;-)


14-1119868771
Priest
2005-06-27 14:39
2005.07.18
Как подключить ноутбук к компу по FireWire


1-1120226418
jagr
2005-07-01 18:00
2005.07.18
Умножение матрицы на вектор с небольшой загвоздкой