Условное выполнение в службах SSIS на основе результатов предыдущих задач SQL - PullRequest
1 голос
/ 17 апреля 2019

В настоящее время я разрабатываю процесс, который проверяет, обновлена ​​ли таблица, а затем добавляет ее в автономную базу данных, из которой я в данный момент работаю. О CDC или любой другой форме репликации не может быть и речи, поскольку я не являюсь системным администратором. У меня есть несколько контейнеров служб SSIS, которые я хочу запустить на основе результатов предыдущей задачи SQL и т. Д. Я пытаюсь построить их в построителе выражений, и задача выводит их в переменную. Переменная заполняется, но тип не совпадает с типом построителя выражений. Я получаю следующую ошибку:

Невозможно преобразовать значение выражения в тип свойства. Дополнительная информация: Невозможно преобразовать 'System.String' в 'System.Boolean'

Я попытался выполнить преобразование как в построителе выражений, так и в задаче SQL, но безуспешно.

Я уверен, что это легко исправить, но мне еще нужно найти что-нибудь в Интернете, чтобы помочь мне решить эту проблему.

Любая помощь очень ценится.

Я преобразовал переменную в разные типы в задаче SQL, но это не сработало, и я также преобразовал ее в построителе выражений, но это дало совершенно другую ошибку о недопустимом параметре приведения.

Это запрос, который проверяет, существует ли таблица

SELECT
    Case when count(*) > 0 then 1
        Else 0 end as cnt
FROM sys.databases WHERE [name] = 'Financial Information'

Если он существует, он выделяет 1, иначе 0 для cnt. Результирующий набор настроен на одну строку.

В построителе выражений я использую:

@[User::cnt] = 1

Но это выдает ошибку:

Невозможно преобразовать значение выражения в тип свойства. Дополнительная информация: Невозможно преобразовать 'System.String' в 'System.Boolean'

1 Ответ

0 голосов
/ 17 апреля 2019

Я полагаю, что это делается в ограничении приоритета после выполнения задачи SQL?Чтобы сделать сравнение, которое возвращает либо true, либо false, необходимо использовать два =.Из сообщения об ошибке, которое вы получаете, похоже, @[User::cnt] является строковой переменной.В приведенном ниже примере также выполняется сравнение с использованием переменной со строковым типом данных, однако, учитывая опубликованный вами запрос, я бы предложил изменить его на тип данных int.Если @[User::cnt] изменено, чтобы иметь тип данных int, двойные кавычки затем должны быть удалены из выражения.

enter image description here

...