2016-09-30 5 views
0

Я загружаю данные с одного SQL-сервера A во временную таблицу через Execute SQL Task (выберите * в x из remote_server) и присоединитесь к другому удаленному SQL Server B в потоке данных.Параллельно загружайте временные таблицы

Так что есть два источника в потоке данных:

1.Local временной таблица, которая содержит дату из SQL Server A (загружались в предыдущей задаче)

2.Table на сервере B. удаленного SQL

Для этого я изменяю свойство менеджера соединений «RetainSameConnection» (которое я использую для вывода данных с SQL Server A на локальный компьютер (сервер SSIS) в TRUE. Он работает, но я не могу загрузить эти задачи параллельно, потому что получаю:

S [[209]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E14. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E14 Description: "Statement(s) could not be prepared.". An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E14 Description: "Invalid object name '##V_DEL'.".

[SSIS.Pipeline] Error: "S" failed validation and returned validation status "VS_ISBROKEN".

Как это решить?

ответ

2

Если вы используете RetainConnection = True, то только один объект за раз может иметь сохраненное соединение. Это означает, что если 2 sql-задачи выполняются параллельно, то только 1 будет использовать сохраненное соединение. Подобно проблеме, которую вы не можете найти, и dest с тем же сохраненным соединением. Единственным обходным решением является сериализация вызовов SQL.

+0

Какое лучшее обходное решение - изменить временные таблицы на постоянное и удалить их после загрузки? – Testtest11

+1

Хмм - Я не понял, что вы делаете. Я думаю, ваша проблема заключается в DelayValidation в DFT. Это должно быть ложным, чтобы разрешить создание таблицы ## до проверки DFT. Затем вы сможете объединиться с потоком ServerB и таблицей ## из ServerA –

Смежные вопросы