2017-08-15 95 views
0

我已經下載了Visual Studio 2015和SQL數據工具2015,因爲我試圖製作一個簡單的SSIS包來從表中複製一些數據行數據庫在另一臺服務器上的另一個數據庫中的表。我有一些複雜的,使我的工作更難,如需要動態建立表名。直到現在我創建了一個執行Sql任務刪除目標中的數據表格以避免重複行。在輸出中,我附加了一個由Ole DB Source和Ole DB Destination組成的數據流活動。我必須爲將來計劃此軟件包的執行。 目前我已經創建了三個包變量:「表名」,「日期」和「ats」。我試圖將這些變量作爲Execute Sql Task編輯器和Ole DB Source編輯器上的參數傳遞給動態t-sql語句。不幸的是,當我在sql命令編輯器中輸入如下查詢時,出現了一些構建錯誤:ssis使用參數作爲表名的動態t-sql語句

「SELECT * FROM?WHERE DATE_REF =?AND ATS =?」

如果我使用的表名而不是第一個問號,我沒有建立錯誤,那麼如何使用變量或參數作爲表名在這種特殊情況下的動態t-sql狀態?我已經嘗試了@ [User :: tablename]而不是第一個問號,但我有一個新的建築錯誤。

在此先感謝您的幫助!

+0

嗨吉米,試着編輯你的問題,並縮小到一個具體問題 –

+0

http://the-simple-programmer.blogspot.com/2010/02/use-variable-as-table-name-in- ssis.html –

回答

0

做到這一點的方法是創建在另一個字符串變量的查詢,其中有一個表達:

"SELECT * FROM " + @[User::tablename] + " WHERE DATE_REF = '" + @[User::date] + "' AND ATS = '" + @[User::ats] + "'" 

(請注意,我假設你的日期字符串變量舉行的格式可以注入SQL語句 - 如果不是的話,你將需要進一步的處理讓它進入這個新的字符串變量)

如何使用:

在OLE DB源組件。在'數據訪問模式'中使用'來自變量的SQL命令'選項:'字段,然後從下面的下拉框中選擇您的新變量。

在執行SQL任務中:將'SQLSourceType'設置爲'Variable',然後從下面的下拉框('SourceVariable')中選擇新變量。

"SELECT * FROM " + @[User::tablename] + " WHERE DATE_REF = '" + @[User::date] + "' AND ATS = '" + @[User::ats] + "'" 

請注意,對於執行SQL任務,您也可以在WHERE子句中使用帶有問號的變量,然後像平常一樣傳遞參數。