我對 SSIS 相當陌生。
我有一個非常復雜的 SQL 查詢(我不想復制和維護 3 次),其結果是一個包含 2 列的表:emailAddress、formLetterNumber
我想做的是
for each row returned:
if formLetterNumber == 1
send form letter #1 to that emailAddress
if formLetterNumber == 2
send form letter #2 to that emailAddress
if formLetterNumber == 3
send form letter #3 to that emailAddress
出于各種商業原因,我不希望有超過 3 個套用信函。
我所做的:
- 在控制流上,我放置了一個執行 SQL 組件。(到目前為止,一切都很好)
- 我將它連接到 Foreach 組件
- 在 Foreach 組件中,我放置了一個發送郵件任務, 在此處輸入影像描述 如果只有 1 種形式的信函,則此方法有效。這個單一格式的信包運行沒有任何問題。
但是現在我想做一個條件拆分,這樣我就可以將流劃分為 3 個不同的發送郵件任務,具體取決于 SQL 回傳的 formLetterNumber。但是Conditional Split 在Data Flow 工具箱上,而Send Mail Task 只在Control Flow 工具箱上,我不知道如何將資料從一個組件移動到另一個組件。對于什么,我試圖做見圖片: 在這里輸入的形象描述, 在這里輸入影像描述
我看過這個網站,在 YouTube 上,要么沒有解決方案,要么我以錯誤的方式問我的問題。C# 和腳本是一種選擇,但購買其他軟體不是。預先感謝您的建議。
uj5u.com熱心網友回復:
可以在 SSIS 控制流中使用優先約束。
優先約束支持運算式。如果我們在 SSIS 優先約束中選擇運算式,它會評估運算式,如果運算式為真,則受約束的可執行檔案將運行。
因此,對于您的情況,您需要三個優先約束,其中包含以下行的運算式:
@formLetterNumber == 1
下一個優先約束運算式將是
@formLetterNumber == 2
關于這個主題的好文章:SSIS 優先約束概述
作為最終結果,可以按如下方式組成該程序:
- 在 Foreach Employee Container 中添加一個空的Sequence Container。
- Out of Sequence Container 添加上述三個優先約束。
- 每個優先約束最終都有自己的發送電子郵件任務,用于特定型別的套用信函。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/399436.html
標籤:sql-server 电子邮件 姐姐 条件分割
