Транзакции SSIS с SQL и JET - PullRequest
       18

Транзакции SSIS с SQL и JET

1 голос
/ 14 декабря 2011

У нас есть сложный пакет служб SSIS (+ подпакеты), который считывает данные из базы данных Access и обновляет базу данных SQL Server (2008 R2).

Он работает нормально, но я хочу, чтобы весь пакетбыть транзакционным, поэтому либо все записи вставляются / обновляются, либо нет, поэтому данные SQL остаются согласованными.

Если я установлю для пакета TransactionOption Обязательно , когда я запускаю пакет, я получаю сообщение о том, что соединение JET OLEDB не может подключиться к распределенным транзакциям, и пакет завершается ошибкой.

Хотя некоторые обновления сделаныбаза данных Access, не имеет значения, если она оставлена ​​в несогласованном состоянии, поскольку при каждом запуске пакета используется свежая копия базы данных Access.

Существует ли способ заставить пакеты работать содна распределенная транзакция, но чтобы исключить подключение базы данных Access из транзакции?

Я перепробовал множество вариантов, но сейчас я просто собираюськруг в кругах!Заранее спасибо.

Дуг

1 Ответ

2 голосов
/ 14 декабря 2011

Не совсем понятно, как выглядит логика вашего пакета, но одним из возможных решений было бы начать с копирования данных 1: 1 из базы данных Access в таблицы с аналогичной структурой в SQL Server. Затем вы можете продолжить обработку, используя хранимые процедуры, и, поскольку все данные уже находятся на сервере, управлять транзакциями гораздо проще.

Это может быть невозможно, если у вас есть другие внешние зависимости, но это довольно распространенный шаблон ETL (сначала скопируйте исходные данные в общую промежуточную базу данных, а затем преобразуйте их), поэтому его стоит рассмотреть и по более общим причинам. Но то, подходит ли вам это или нет, очень сильно зависит от ваших данных и вашей системной среды.

...