SSIS高階轉換任務 OLE DB命令

2021-06-04 14:18:46 字數 2136 閱讀 5311

ole db commond任務接受輸入流中的行資料並執行一段sql語句或自定義儲存過程。這個轉換和execute sql任務容易混淆,但是它非常類似於在ado連線中迴圈接收乙個結果集中的資料,建立,執行乙個ado命令。輸入流中的引數資料可以提供給乙個sql命令或者儲存過程。這裡我們看到「迴圈」可能就會聯想到另外乙個詞「效能」。這可能涉及到更新,插入,刪除語句,每次都會有斷開,連線的操作。但是並不意味著這個轉換一無是處,這裡我們著重理解這個任務如何配置和使用的。要注意有多少輸入資料並在需要快取資料到臨時表或實際表時權衡效能和伸縮性,以達到最優效果。

連線管理:設定ole db連線,通過這個連線獲得要執行的sql語句,要注意輸入流中的引數資料並不一來自這個源

元件屬性:在這個標籤內,sqlcommand屬性設定sql語句,commandtimeout屬性設定連線失效時間,這點和ado連線物件的工作原理是一樣的,設定為0表示沒有失效時間。在這個標籤內還可以設定任務名字和描述

列對映:這個標籤顯示輸入流中的列和目標列,即sql語句中的引數名字。使用滑鼠拖拽的方法將他們連線起來。他們是一一對應的,假設語句中的引數要比輸入流中的多,需要使用派生列轉換產生多餘的列

輸入和輸出屬性:多數時候在列對映標籤內可以完成輸出列設定,但是如果ole db資料來源不支援派生引數,需要在這裡使用parametersnames和dbparaminfoflags屬性設定輸出列

學習這個轉換任務的最好方法是操作乙個例子。這個例子假設要驗證每天的存款資料並在資料庫中建立存款項。您還必須為每個客戶建立支付交易,以便會計核算人員通過軟體來審查。在這個例子中我們不需要知道如何建立存款項和支付交易,我們只是建立兩個空的儲存過程來完成這項工作。

建立乙個package 命名為ole db command,新增乙個data flow tesk,雙擊進入control flow

新建乙個文字檔案,並儲存到c:\ole db eft data.txt,檔案內容如下:

customerid,depositamt,depositdate,invoice

xy-111-222,$100.00,07/13/2005,222-063105

xx-z11-232,$1000.00,07/13/2005,232-063105

xx-y88-233,$555.00,07/13/2005,233-053105

執行下面的sql語句,在資料庫adventureworks中建立兩個空的儲存過程

use adventureworks

gocreate proc usp_deposittrans_add (

@customerid varchar(10),

@depositamt money,

@depositdate smalldatetime,

@invoice varchar(15))

as---乙個空的儲存過程只是為了做例項

gocreate proc usp_paymenttrans_add (

@customerid varchar(10),

@depositamt money,

@depositdate smalldatetime,

@invoice varchar(15))

as--乙個空的儲存過程只是為了做例項

新增乙個flat file source,連線到c:\ole db eft data.txt

在data flow設計介面內拖放乙個ole db command task,將flat file source和它連線起來

開啟ole db command的編輯介面,在connection manager設定連線到資料庫adventureworks。在component properties標籤介面內,設定sqlcommand屬性為usp_deposittrans_add ?, ?, ?, ?。這裡?表示乙個輸入引數。最後的介面如圖1

圖1 再新增乙個ole db command,將第乙個和第二個連線起來,配置和第乙個類似,但在這裡sql commond屬性設定為usp_paymenttrans_add ?, ?, ?, ?

執行這個package,文字檔案中的三行資料作為這兩個儲存過程的引數輸入執行。如果儲存過程是真實存在的,就會建立三個存款項和三個交易。這裡我們也可以看到這裡可以重複使用這三個儲存過程,只要提供適當的引數。在這個例子中,可以重複使用現有的邏輯,將一批資料一次輸入到package中執行。

SSIS高階轉換任務 OLE DB命令

ole db commond任務接受輸入流中的行資料並執行一段sql語句或自定義儲存過程。這個轉換和execute sql任務容易混淆,但是它非常類似於在ado連線中迴圈接收乙個結果集中的資料,建立,執行乙個ado命令。輸入流中的引數資料可以提供給乙個sql命令或者儲存過程。這裡我們看到 迴圈 可能...

SSIS元件轉換 查詢轉換

查詢轉換功能和模糊查詢轉換功能類似。只不過查詢轉換相比模糊轉換容易的多。相當於模糊查詢轉換中的完全匹配設定,查詢轉換包含以下屬性 在常規選項卡中我們可以看到如圖的一些設定 圖中的具體含義如下 屬性說明 完全快取 在執行查詢轉換前,生成引用資料集並將其載入到快取中。部分快取 在執行查詢轉換的過程中生成...

SSIS高階內容 系列六

1 事務 distributed transaction coordinator dtc transactions 乙個或多個需要dtc的事務,可以跨連線,任務和程式包。native transaction 位於sql serve引擎級的事務,使用單一連線,該連線通過使用乙個t sql事務命令來管理...