我想根據條件在SSIS中執行任務。具體來說,我想要創建一個表或清除它(截斷它),取決於它是否已經存在。如何在SSIS中執行條件分支
目前我使用的是SQL任務,在SQL做的工作,但我不知道是否有更好的辦法...
謝謝!
我想根據條件在SSIS中執行任務。具體來說,我想要創建一個表或清除它(截斷它),取決於它是否已經存在。如何在SSIS中執行條件分支
目前我使用的是SQL任務,在SQL做的工作,但我不知道是否有更好的辦法...
謝謝!
通過向優先約束添加一個表達式,這在技術上是可行的。 Click here for the details。基本步驟...
創建一個包範圍的變量@FoundMyTable如果表存在和0,如果表不存在
設置通過@FoundMyTable的價值,將持有的值1一個名爲執行SQL LookForMyTable的任務,使用select語句和INFORMATION_SCHEMA.TABLES返回表計數
SELECT COUNT(1)AS table_count
FROM INFORMATION_SCHEMA.TABLES t
WHERE t.TABLE_NAME = 'MyTable';
創建兩個執行SQL任務:TruncateMyTable和CreateMyTable
連接LookForMyTable既TruncateMyTable和CreateMyTable
上LookForMyTable和TruncateMyTable> 表達式和約束> @FoundMyTable == 1
上LookForMyTable之間的優先約束雙擊之間的優先約束雙擊和CreateMyTable> 表達式和約束> @FoundMyTable == 0
是否有任何好處分裂邏輯到幾個SSIS UI任務?鑑於我認爲這是一個偏好和風格問題,我喜歡在SQL代碼中保留儘可能多的邏輯,而不是SSIS包UI任務。 – Mike
我必須同意@Mike,包含很多花哨的UI技巧的包比在SQL任務中執行大量操作的包更難維護。 – HLGEM
我主要同意Mike和@HLGEM。這裏更大的問題可能是:這是一個好主意嗎?我會說這取決於。隨着這一變化,包裝中的下一個更有效?例如:爲什麼這個軟件包應該分支,下游有一個很好的理由嗎?也許截斷之後的右手路徑完全不同於創建表之後的左手路徑。如果沒有實質性差異,那麼一定要用一個SQL任務來解決它。在可視化方面還可以取決於您的偏好:這是否感覺混亂? –