Пока мы ждем точной ошибки, мысленно анализируя выражение, я думаю, вам нужны пробелы, чтобы оно было действительным 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]