2016-06-16 4 views
0

Этого нет в SSIS 2008. Что это за символ FX в выполнении sql-задачи? Кажется, это считается параметром. Есть ли хорошая статья об этом?Что такое символ FX на ssis execute sql task ssis 2012?

Может кто-нибудь сказать, что использование этого:

enter image description here

+1

"формула", как правило. –

+0

Это означает, что это динамически передает его во время выполнения !? – user1254579

+0

Да, это означает, что он генерируется во время выполнения из выражения. –

ответ

4

В то время как символ нового, концепция в SSIS 2008: Это просто означает, что эта конкретная задача или компонент имеет одно или несколько свойств устанавливается с использованием SSIS Expression, а не явно жестко закодированным.

Из документации:

В меню Инструменты SQL Server Data (SSDT), специальный значок маркера отображается рядом для диспетчеров соединений, переменных и задачи, которые имеют выражения набор на них. Свойство HasExpressions доступно для всех объектов SSIS , которые поддерживают выражения, за исключением переменных. Свойство позволяет легко идентифицировать объекты, которые имеют выражения.

3

Чтобы построить ответ Кайла, щелкните правой кнопкой мыши задачу Выполнение SQL и выберите Свойства. В окне свойств найдите выражения и разверните +. При этом вы увидите все свойства, заданные с помощью выражений.

Properties

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

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

"SELECT * FROM " @[User::TableName] + " AS X WHERE X.DayOfWeek ='" + (DATEPART("dw", GETDATE()) == 1 ? "Sunday" : DATEPART("dw", GETDATE()) == 2 ? "Monday" : 
DATEPART("dw", GETDATE()) == 3 ? "Tuesday" : DATEPART("dw", GETDATE()) == 4 ? "Wednesday" : 
DATEPART("dw", GETDATE()) == 5 ? "Thursday" : DATEPART("dw", GETDATE()) == 6 ? "Friday" : 
DATEPART("dw", GETDATE()) == 7 ? "Saturday" : "InvalidDay") + "';" 

удачи в психическом разборе.

Я нахожу, что я более успешно отлаживаю сложные выражения, если я выполняю всю работу в переменных SSIS. В приведенном выше примере я бы создал переменную Query типа String. Затем я использовал бы указанное выражение для переменной. Затем я установил SqlStatementSource как @ [User :: Query] вместо того, чтобы выполнять логику в Задаче. Конечный результат тот же, за исключением того, что теперь, если что-то действует «смешно», я могу установить точку останова в Задаче, а затем проверить значение моей переменной, потому что она была оценена. Это тонкая разница, но значительная.