SSIS Dynami c выражение - PullRequest
       19

SSIS Dynami c выражение

1 голос
/ 18 апреля 2020

Я пытаюсь передать имя таблицы и имя параметра dynamici c в задачу выражения, которая не выполняется.

enter image description here

Мое выражение похоже на

@[User::vSQLCommand] ="SELECT COUNT(*) FROM"+  @[User::ExtractFileStageTableName] +" WHERE"+ 
@[User::IsNotNullColumnName]+"   IS NULL AND"+  @[User::IsNotNullColumnName]   +"=''"

Это простой запрос SQL, подобный

 SELECT COUNT(*) FROM lnd.ANC_LND_ItemOverride WHERE Comments IS NULL OR Comments = ''

, но не достижимый в выражении. Любая помощь, пожалуйста

РАЗРЕШЕНИЕ: Поскольку я все еще не уверен, почему значения Dynami c не работают в задаче выражения. Я использовал Script Task и смог достичь результатов.

1 Ответ

2 голосов
/ 18 апреля 2020

Пока мы ждем точной ошибки, мысленно анализируя выражение, я думаю, вам нужны пробелы, чтобы оно было действительным SQL. Кроме того, вы должны использовать оператор OR вместо AND:

"SELECT COUNT(*) FROM " +  @[User::ExtractFileStageTableName] + " WHERE " + 
@[User::IsNotNullColumnName]+"   IS NULL OR "+  @[User::IsNotNullColumnName]   +" = ''"

В поставляемом тексте SQL было FROM и WHERE напротив следующего свойства в выражении.

Из комментариев Shweta указывает, что они не могут видеть @[User::IsNotNullColumnName] Если вы используете SQL Server 2005 и, возможно, инструменты разработки 2008 / 2008R2, поведение по умолчанию состоит в том, что переменная SSIS будет создана на область, в которой курсор находится в фокусе. Предполагая, что в вашем пакете есть перечислитель Foreach, находящийся в потоке управления, что в контейнере Foreach есть задача «Выполнить SQL» и в настоящий момент выбрана задача «Выполнить SQL», будет создана переменная, имеющая область действия только во время ее выполнения. , Ссылка на эту переменную в контейнере или пакете Foreach L oop не будет выполнена, так как переменная выходит за пределы области видимости.

Гораздо более распространенная причина, по которой редактор выражений сообщает об ошибках с именами переменных, заключается в том, что они чувствительны к регистру. Таким образом, @ [User :: IsNotNullColumnName] - это не то же самое, что @ [User :: IsNotNullColumnname] или даже очень забавный @ [User :: IsNotNullColumName]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...