DTS устанавливает оператор SQL для шага в другом шаге - PullRequest
2 голосов
/ 27 февраля 2009

Так как я не могу использовать? в более сложных инструкциях SQL, которые мы выполняем, мы читаем где-то, что вы можете установить предыдущий шаг, чтобы настроить SQL для вас. Это шаг ActiveX, который устанавливает SQL-оператор шагов и подставляет его в глобальные переменные.

Таким образом, шаг SQL имеет SELECT 0 и шаг, предшествующий ему, по сути, является сценарием VB, как показано ниже

'205 (Изменить SourceSQLStatement) Опция Явная

Функция Main () Dim oPkg, oDataPump, sSQLStatement

' Build new SQL Statement
sSQLStatement = "IF (SELECT 1 FROM TABLE fm WHERE NOT EXISTS ("&_
            "SELECT HighestVersionReceived "&_
            "FROM FILE_CURRENT fc "&_
            "WHERE fc.COL = fm.COL "&_
            "AND fc.HighestVersionReceived < fm.FileVersion) "&_
            "AND [FileName] = '" & DTSGlobalVariables("GLBFileName").Value & "') = 1 "&_
            "SELECT 1 AS VALID "&_
            "ELSE "&_
            "SELECT 0 AS VALID"

' Get reference to the DataPump Task
Set oPkg = DTSGlobalVariables.Parent
Set oDataPump = oPkg.Tasks("DTSStep_DTSExecuteSQLTask_34").CustomTask

' Assign SQL Statement to Source of DataPump
oDataPump.SourceSQLStatement = sSQLStatement

' Clean Up
Set oDataPump = Nothing
Set oPkg = Nothing

Main = DTSTaskExecResult_Success

Функция завершения

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

Так что я вне моей глубины. Есть идеи?

Возможно, измените тип шага, на котором выполняется SQL?

1 Ответ

1 голос
/ 10 марта 2009

Вы пытались изменить сложный оператор TSQL на хранимую процедуру?

После этого вы можете иметь входной параметр в хранимой процедуре для FileName. Эта хранимая процедура может быть использована в качестве источника вашей задачи прокачки данных, при этом параметру присваивается значение глобальной переменной DTS во время выполнения с помощью "?" Синтаксис, который вы упоминаете.

...