我有一個包含兩個執行sql任務後面跟着大量DFT的包。第一種說法是:SSIS傳遞一個變量來執行sql任務(創建表參數)
select CAST(floor(rand()*1000)+1 AS INT) AS SeqVar
並且具有ResultSet單行 - 這是完美的。它給我一個介於1和1000之間的隨機數,並將該值傳遞給我稱爲SeqVar的變量。 (我也驗證了這個工程)
我遇到的問題是我的第二個執行SQL任務,我嘗試使用從第一執行SQL teask輸出的SeqVar變量如下面的語句中的參數:
IF OBJECT_ID('tempdb.dbo.[##temp1]') IS NOT NULL
DROP TABLE [##temp1]
CREATE TABLE [##temp1] (
[RecID] int IDENTITY(?,1),
[Name] VARCHAR(30),
[ABA] VARCHAR(10),
[Account] VARCHAR(20),
[Type] VARCHAR(1),
[Date] date,
[Amount] money
);
在參數映射我有SeqVar變量名,方向是輸入,數據輸入數字,參數名稱是0,和參數大小爲1000
我得到的值必須去的地方我有「 ?」在創建tempdb語句中。我試圖讓我的代碼從一個隨機數開始,然後遞增1.
我知道這可能會更容易與一個腳本任務,但該工具是在我的機器上(怪異的dts管道錯誤)打破。在此先感謝,這是所有SSIS 2008.
參數不會這樣的。你需要用一個字符串中的表達式來烹飪,然後運行字符串。腳本任務也在我的機器上被破壞!這似乎很不可靠。 –
解決方案:保存變量中存儲的隨機數,並在創建臨時表時將RecID設置爲IDENTITY(1,1)。然後在派生列中,我有@SeqVar + RecID。因此,每一行進入RecID迭代並被添加到隨機數。感謝您的所有意見,非常感謝! – Tweaver