SSIS高級轉(zhuǎn)換任務(wù)—在Package中是用臨時表是需要設(shè)置RetainSameConnection屬性
在上一個導入列這個例子中我們創(chuàng)建一個實際的表來存儲文件路徑,在生產(chǎn)環(huán)境中我們可能不會創(chuàng)建一個實際的物理表來存儲這些信息,而是創(chuàng)建臨時表。這里有一個小小的技巧,在Control Flow中拖放兩個Execute SQL task,一個創(chuàng)建臨時表,另一個銷毀臨時表,執(zhí)行這個package,會遇到一個錯誤,在Progress中提示信息顯示不存在這個臨時表。錯誤信息如下:
Error: 0xC002F210 at Execute SQL Task 1, Execute SQL Task: Executing the query "drop table #Table1" failed with the following error: "Cannot drop the table '#Table1', because it does not exist or you do not have permission.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
Task failed: Execute SQL Task 1
很明顯即使使用相同的連接對象,這兩個Execute SQL任務(wù)沒有使用相同的連接,查看這個OLE DB Connection的屬性,會注意到有一個屬性RegainSameConnection,默認的值是false。呵呵,這里要設(shè)置成true才能滿足需求的。如圖6-1

圖6-1
每一個task都回單獨地使用這個連接,但是臨時表只能在一個連接中有效,連接關(guān)閉時臨時表也就不存在了。將這個屬性修改為true,所有的task都會使用同一個連接,這樣就不會出錯了。在循環(huán)任務(wù)中需要連接數(shù)據(jù)庫時這個屬性設(shè)置也很重要,它將避免多次打開,關(guān)閉連接。
這個和我們在寫sql語句的時候使用臨時表是一樣的,所以說只要我們足夠的熟悉SQL Server中的概念,SSIS也就很容易上手了。
作者:Tyler Ning
出處:http://www.rzrgm.cn/tylerdonet/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,請微信聯(lián)系冬天里的一把火
浙公網(wǎng)安備 33010602011771號