Главная страница
    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.45 MB
Время: 0.041 c
11-1102852673
kosend
2004-12-12 14:57
2005.07.18
Добавление новой формы


14-1119426280
Кирилл
2005-06-22 11:44
2005.07.18
Местоположение


6-1113233727
Diesel
2005-04-11 19:35
2005.07.18
Подмена сокета при сборки пакета.


6-1113171232
Chubais
2005-04-11 02:13
2005.07.18
sendto проблемы!


11-1102892454
черный дембель
2004-12-13 02:00
2005.07.18
Метод Post в http





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский