ref006 ssis
TRANSCRIPT
SSIS 資料 轉作業介紹拋
◎ SQL Server Integration Services
繼 MS SQL 2000 的 DTS 之後, MS SQL 2005 推出SQL Server Integration Service 服務,該功能可從各種來源 ( 如 XML 資料 、一般 案和關聯式資料來源檔 檔 ) 擷取和轉換資料,然後將該資料載入到一或多個目的地,經過流程控制 設計,藉此達到兩個環境資料整合的目的
SQL Server Oracle●SSIS 主程式 : 每日資料 轉作業 拋
(5:30 AM Windows 工作排程 )
●ExcessDataDel : 刪除對應 Oracle 端的
delete 資料 (5:00 AM SQL Server
Agent)
● TX_SSIS_STATUS : 寫入網站開 狀態啟
( 依執行時程 Table)
●PX_SSIS_ROW_CHK : 每日資料表筆數
檢 作業 查 (6:00 AM Oracle Job)
●TRIX_TABLE_ONDEL :轉 相關表格若有資料刪除會將相關資訊拋
存到 TX_DTS_DEL 中, (SQL Server)
ExcessDataDel 定時抓取該表資料每日 執
行刪除 ( 觸發器 / 即時 )
Time(AM) Process Scheduler concurrency
5:20 SQL server 多餘資料刪除作
業
(SQL server)
SQL Server
Agent
* 觸發器監控 DML 作業
* 資料數量一致性檢查
網站 user 登入時檢查 SQL
server 表
TX_SSIS_STATUS
5:30 SSIS 主程式 + 資料表筆數
計算
(SQL server)
Windows 工作
排程
6:00 PX_SSIS_ROW_CHK
(Oracle)
Oracle Job
Time table
6:30 資料庫日常檢 通知郵件查
點選 [SQL 執行工作 ] ,修改以下三個屬性
Connection : LocalHost.webuser
SQL Statement :Delete from aceweb.tx_table
Name:表格名稱
點選 [OLE DB 來源 ] ,修改以下三個屬性
OLD DB 連接管理員 : Pro.sql2005
SQL Statement :SQL 命令
Name:將 Oracle 端要轉出的表,填入 SQL 查詢,在 where 條件子句要加上 update_time <= trunc(sysdate)+5/24 這個條件
點選 [OLE DB 目的地 ] ,修改以下三個屬性
OLD DB 連接管理員 : LocalHost.WebDB
資料存取模式 :資料表或檢視 – 快速載入
資料表或檢視的名稱 :選取 SQL server 要轉入的表
從工具箱拉一個 [ 時序容器 ] 物件,把 3 個 [SQL 執行作業 ] 、 2 個[ 資料流程工作 ] 工作拉進去,並指向流程方向,如下圖
流程方向紅線的設置,點選流程方向,按右鍵勾選 [ 失敗 ]
點選 [SQL 執行工作 ] ,修改以下四個屬性
Connection : Pro.sql2005
SQL Statement :
Name :Check_tx_table
ResultSet :單一資料列
SELECT decode(STATUS,'E ','1','2') As check_TX_TABLEFROM TX_SQL2005_SSIS_LOGWHERE (LOG_TIME >= trunc(sysdate - 1)) AND (LOG_TIME < trunc(sysdate)) AND (TABLE_NAME = 'TX_TABLE') AND status<>'B' order by log_time desc
[ 失敗流程 ]評估作業:運算式或條件約束
:失敗值運算式: @check_tx_table==“2”
[ 成功流程 ]評估作業:運算式與條件約束
:成功運算式:值@check_tx_table==“1”
回到上層,點選流程箭頭,分別在紅線 / 綠線點兩下,設定其中的屬性
拉出 [SQL 執行工作 ] ,修改以下三個屬性
Connection : LocalHost.webuser
SQL Statement :delete from aceweb.TX_TABLE where KEY_ID in (select * from openquery(ORACLE10G,'SELECT KEY_ID FROM TX_TABLE
WHERE UPDATE_TIME >= TRUNC(sysdate-1)+5/24 and UPDATE_TIME <= TRUNC(sysdate)+5/24 '))
Name:Delete TX_TABLE incre
成功流程端
點選 [OLE DB 來源 ] ,修改以下三個屬性
OLD DB 連接管理員 : Pro.sql2005
SQL Statement :“SELECT column1, column2,column3, column4 FROM TX_TABLE WHEREUPDATE_TIME >= TRUNC(sysdate-1)+5/24 and UPDATE_TIME <= TRUNC(sysdate)+5/24”
( 在 where 條件子句要加上 update_time >= trunc(sysdate)+5/24 and update_time <= trunc(sysdate)+5/24 這個條件 )
Name:將 Oracle 端要轉出的表,填入 SQL 詢,查
成功流程端
點選 [OLE DB 目的地 ] ,修改以下三個屬性
OLD DB 連接管理員 : LocalHost.WebDB
資料存取模式 :資料表或檢視 – 快速載入
資料表或檢視的名稱 :選取 SQL server 要轉入的表
成功流程端
點選 [SQL 執行工作 ] ,修改以下三個屬性
Connection : LocalHost.webuser
SQL Statement :Delete from aceweb.tx_table
Name:表格名稱
失敗流程端
點選 [OLE DB 來源 ] ,修改以下三個屬性
OLD DB 連接管理員 : Pro.sql2005
SQL Statement :SQL 命令
Name:將 Oracle 端要轉出的表,填入 SQL 詢,查在 where 條件子句要加上 update_time <= trunc(sysdate)+5/24 這個條件
失敗流程端
點選 [OLE DB 目的地 ] ,修改以下三個屬性
OLD DB 連接管理員 : LocalHost.WebDB
資料存取模式 :資料表或檢視 – 快速載入
資料表或檢視的名稱 :選取 SQL server 要轉入的表
失敗流程端
點選 [SQL 執行工作 ] ,修改以下三個屬性
Connection : Pro.sql2005
SQL Statement :[ 下頁說明 ]
Name:Start_TX_TABLE ( 開始 )Fail_TX_TABLE_1 ( 失敗 1)Fail_TX_TABLE_2 ( 失敗 2)End_TX_TABLE ( 結束 )
SQL : INSERT INTO TX_SQL2005_SSIS_LOG ( TABLE_NAME, STATUS) VALUES ('T_POLICY_CHANGE' ,'B' )
SQL : INSERT INTO TX_SQL2005_SSIS_LOG ( TABLE_NAME, STATUS) VALUES ('T_POLICY_CHANGE' ,'E')
SQL : INSERT INTO TX_SQL2005_SSIS_LOG ( TABLE_NAME, LOG_TIME, STATUS) VALUES ('T_POLICY_CHANGE' ,sysdate ,'F')
SQL : INSERT INTO TX_BATCH_OPT (PROGRAM_NAME, LOG_TIME, STATUS, MESSAGE) VALUES ('SSIS process', sysdate, 'ERROR', 'T_POLICY_CHANGE')