Я думаю, что вам нужен внутренний продукт. Для двух векторов v,u
(в R^n
или любых других пространствах внутренних произведений)
. (где alpha
- это угол между векторами)
, более подробно см .:
К сожалению, обе официальные документы от обоих поставщиков кажутся счастливыми. упомянуть поставщика взаимодействия или другого, но оба, похоже, не хотят признавать существование предложения другой базы данных.
Возможно, вам потребуется документация по Oracle Services for Microsoft Transaction Server .
Начиная с ODP.NET 10.2.0.3 и далее, вы должны (если вы правильно настроили MS DTC и присутствует DLL OraMTS) иметь возможность просто использовать System.Transactions TransactionScope так же, как если бы вы выполняли координацию между двумя базами данных сервера sql, но с использованием сервера sql и соединения оракула. Для того, чтобы это работало из коробки, может потребоваться Oracle 10 и более поздних версий.
Вот руководство по использованию DTC начиная с .net 2.0 и Sql Server 2005 и далее . В частности, он отмечает требования к ОС (которые больше не должны быть проблемой, но их стоит отметить). Кроме того, если обе базы данных и клиент не находятся на одном компьютере, необходимо включить сетевой DTC.
Я использую связанные серверы для всех подобных задач. Это упрощает нам управление информацией о подключении и учетными данными. По сути, все наши потребности в одном магазине.
Edit: more details - У нас есть одна база данных, которая используется исключительно для отчетности. Мы получаем данные с серверов по всей корпорации. У нас нет единой учетной записи для доступа к этим серверам, некоторые из них мы используем функциональный идентификатор, а другие - наши учетные данные AD. Нам лучше всего сработало объединение всех этих подключений в отдельные связанные серверы. На нашем сервере отчетов в настоящее время имеется 16 связанных серверов.
Мы также объединяем наши запросы в представления для облегчения доступа к нашим приложениям и отчетам Crystal. Поэтому вместо того, чтобы создавать несколько строк подключения в нашем коде, мы используем только одну глобальную строку для подключения к базе данных отчетов.
Это классическая проблема распределенной транзакции, для которой предназначен MSDTC. Поищите мониторы транзакций и протокол XA для более глубокого описания этого класса проблем.
При использовании нескольких подключений вам потребуется использовать DTC. Одно соединение может управлять одной транзакцией, но если у вас несколько соединений, вам понадобится координатор транзакций для обработки протокола двухфазной фиксации.
Мой ответ может быть немного странным, но я рекомендую вам (если это технически возможно) оценить использование двух независимых транзакций для каждой базы данных. В отношении распределенных транзакций / XA меня беспокоит общая производительность / масштабируемость / задержка базы данных.
2 ссылки, которые попытаются подтвердить мою точку зрения:
Да, вам необходимо создать область транзакции, и поставщики ADO.Net для SQL и Oracle будут регистрировать каждое соединение в одной распределенной транзакции, координируемой MSDTC.
MSDN документация по настройке MSDTC довольно сложна и охватывает конкретно вопросы, которые вы задаете: Включить исключения брандмауэра для MS DTC , Настройка безопасности для распределенных транзакций .
Вы не упоминаете ОС, на которой работает ваш клиент, версия SQL Server, версия Oracle, внутренняя ОС для SQL Server (ов) и Oracle (ов). Вы также не сообщаете о любой фактической проблеме, с которой вы столкнулись, или сообщениях об ошибках, которые вы видели. Сейчас проблема, кажется, находится где-то между клавиатурой и стулом.