Оператор case или if в выражении SSIS - PullRequest
1 голос
/ 14 марта 2019

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

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

Вот что у меня есть

@[$Project::Parameter] == "SERVER1" ? @[$Project::SERVER1_ConnectionString]  
: ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString] 
: ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString]  
: "Unknown Server"))

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

По сути, я ищу это

Если Parameter = SERVER1, тогда дайте мне SERVER1_ConnectionString, если Parameter = SERVER2, тогда дайте мне SERVER2_ConnectionString и так далее ...

РЕДАКТИРОВАТЬ: синтаксис был правильным, но моя проблема была опечатка моего проекта параметра

1 Ответ

1 голос
/ 14 марта 2019

Оценить переменную как выражение

Самый простой способ - добавить переменную @[User::ConnectionSting] типа String, выбрать для оценки этой переменной как выражение и использовать следующее выражение:

@[$Project::Parameter] == "SERVER1" ? @[$Project::SERVER1_ConnectionString]  
: ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString] 
: ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString]  
: ""))

Затем нажмите на диспетчере соединений OLEDB, нажмите F4 , чтобы отобразить вкладку свойств, выражение GoTo, выберите свойство ConnectionString и используйте следующее выражение:

@[User::ConnectionSting]

И нажмите на задачу потока данных и задачи, которые используют соединение, и установите для свойства Delay Validation значение True

Использование задачи выражения

Можно использоватьтот же метод, но вместо оценки @[User::ConnectionSting] как выражения, добавьте задачу Expression в начале пакета и используйте следующее выражение:

@[User::ConnectionSting] = (@[$Project::Parameter] == "SERVER1" ? 
@[$Project::SERVER1_ConnectionString] : ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString] : ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString] : "")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...