[英]Data not getting fetched from Source using ODBC Connection and passing the SQL Query from a variable
我有一個源查詢,其中我使用 ODBC 連接從 Horton 獲取數據
Select * from Table1 Where CreationDate > '2020-09-24 00:00:001'
當我手動運行此查詢時,它運行良好,但是當我運行我的 SSIS Package 時,沒有獲取任何數據。
請注意,我正在從變量傳遞此 SQL 查詢,並且所有變量都已正確傳遞。 我已經使用編輯斷點對其進行了檢查。
您的查詢問題似乎是將 SSIS DateTime 類型轉換為字符串表示形式的默認格式。 ODBC 源似乎需要YYYY-MM-DD hh:mm:ss:mss
(其中 mss 是毫秒,但不是正確的格式代碼)。
我傾向於將我的長表達式分解為多個變量,然后有一個“簡單”的最終形式將它們放在一起。
Date_YYYYMMDD -> (DT_WSTR, 4) YEAR(@[System::ContainerStartTime]) + "-" + RIGHT("0" + (DT_WSTR, 2) MONTH(@[System::ContainerStartTime]),2) + "-" + RIGHT("0" + (DT_WSTR, 2) DAY(@[System::ContainerStartTime]),2)
這構建了我的 YYYY-MM-DD 格式字符串。 數據類型為String
Date_HHMMSSms -> RIGHT("0" + (DT_WSTR, 2) DATEPART( "Hour", @[System::ContainerStartTime] ),2) + ":" + RIGHT("0" + (DT_WSTR, 2) DATEPART( "Minute", @[System::ContainerStartTime] ),2) + ":" + RIGHT("0" + (DT_WSTR, 2) DATEPART( "Second", @[System::ContainerStartTime] ),2) + ":" + RIGHT("0" + (DT_WSTR, 3) DATEPART( "Millisecond", getdate() ),3)
這構建了時間組件。 我一直提倡使用系統變量ContainerStartTime
而不是 GETDATE(),因為每次我們訪問它時都會評估 getdate,而容器啟動時間對於執行 package 是恆定的。我發現並且迫不及待想寫博客的是表達式語言似乎無法從 ContainerStartTime 中獲取毫秒數,但對於 GETDATE() 調用可以正常工作。
最終日期變量然后變成類似
Date_Filter -> @[User::Date_YYYYMMDD] + " " + @[User::Date_HHMMSSms]
然后使我的查詢用法看起來像
Query_Source -> "Select * from Table1 Where CreationDate > '" + @[User::Date_Filter] + "'"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.