Хотел предоставить более подробную информацию по подходу @ TabAlleman. Для каждой задачи потока управления с таким именем, как Bene_hic
, вы получите исходный файл и файл назначения. На вкладке 'Event Handlers'
для этого исполняемого файла (используйте раскрывающийся список) вы можете создать событие OnPostExecute
.
В этом случае у меня есть две задачи SQL. Один генерирует SQL для выполнения для этой задачи потока управления, второй выполняет SQL.
Эти задачи SQL зависят от двух пользовательских переменных, помеченных в событии OnPostExecute
. Свойству EvaluateAsExpression
установлено значение True
. Первый из них, Variable1
, используется в качестве шаблона для SQL для выполнения и имеет значение, как:
"SELECT execSQL FROM db.Ssis_onPostExecute
where stgTable = '" + @[System::SourceName] + "'"
@[System::SourceName]
представляет собой систему с переменной SSIS, содержащий имя задачи потока управления.
У меня есть таблица в моей базе данных с именем Ssis_onPostExecute
с двумя полями, execSQL
поля со значениями, такими как:
DELETE FROM db.TableStats WHERE TABLENAME = 'Bene_hic';
INSERT INTO db.TableStats
SELECT CreatorName ,t.tname, CURRENT_TIMESTAMP ,rcnt FROM
(SELECT databasename, TABLENAME AS tname, CreatorName FROM dbc.TablesV) t
INNER JOIN
(SELECT 'Bene_hic' AS tname,
COUNT(*) AS rcnt FROM db.Bene_hic) u ON
t.tname = u.tname
WHERE t.databasename = 'db' AND t.tname = 'Bene_hic';
и stgTable
поля с именем соответствующей задачи потока управления в пакете (регистру чувствительный!), Как Bene_hic
В первой задаче SQL (названной SQL
,) У меня есть SourceVariable
набора для переменного пользователя (User::Variable1
) и ResultSet
имущества установлено в 'single row.'
результирующего набора подробно включает в себя Result Name
= 0
и Variable name
в качестве второго переменная пользователя (User::Variable2
.)
Во второй задаче SQL (exec
,) у меня есть множество SQLSourceType
собственности на Variable
и SourceVariable
набор свойств для User::Variable2
.
Затем пакет может копировать данные в исходном объекте в пункт назначения и не сработает ли он или нет, введите строку в таблице с меткой времени и количеством скопированных строк вместе с именем таблицы и всем иначе вы хотите отслеживать.
Кроме того, при отладке вам необходимо запустить весь пакет, а не только одну задачу в событии. В противном случае переменные не будут установлены правильно.
HTH, мне потребовалось навсегда, чтобы понять все это, работая с примерами на нескольких веб-сайтах. Я использую код для генерации SQL в поле execSQL
для каждой из 42 задач управления потоком, то есть я создал 84 пользовательских переменных.
-Beth
Я использовал цикл (C#) в задаче сценария и вставил журналы, получив диспетчер соединений с базой данных. Казалось немного проще. Спасибо за идею и ссылку :) – nlkasyap