More Related Content
Similar to REF006 SSIS (20)
REF006 SSIS
- 2. SSIS 資料 轉作業介紹拋
◎ SQL Server Integration Services
繼 MS SQL 2000 的 DTS 之後, MS SQL 2005 推出
SQL Server Integration Service 服務,該功能可從各種來
源 ( 如 XML 資料 、一般 案和關聯式資料來源檔 檔 ) 擷取
和轉換資料,然後將該資料載入到一或多個目的地,經過
流程控制 設計,藉此達到兩個環境資料整合的目的
- 3. 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 定時抓取該表資料每日 執
行刪除 ( 觸發器 / 即時 )
- 4. 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 資料庫日常檢 通知郵件查
- 10. 從工具箱拉一個 [ 時序容器 ] 物件,把 [SQL 執行作業 ] 、 [ 資料流程工作 ]
工作拉進去,並指向流程方向 ( 曳綠線拖 )
- 11. 點選 [SQL 執行工作 ] ,修改
以下三個屬性
Connection :
LocalHost.webuser
SQL Statement :
Delete from aceweb.tx_table
Name:
表格名稱
- 12. 點選 [ 資料流程工作 ] ,在工具箱把 [OLE DB 來源 ] 與 [OLD DB 目的地 ] 物
件拉入,並指向流程方向 ( 拖曳綠線 )
- 13. 點選 [OLE DB 來源 ] ,修
改以下三個屬性
OLD DB 連接管理員 :
Pro.sql2005
SQL Statement :
SQL 命令
Name:
將 Oracle 端要轉出的表,
填入 SQL 查詢,
在 where 條件子句要加上
update_time <=
trunc(sysdate)+5/24 這個
條件
- 14. 點選 [OLE DB 目的地 ] ,
修改以下三個屬性
OLD DB 連接管理員 :
LocalHost.WebDB
資料存取模式 :
資料表或檢視 – 快速載入
資料表或檢視的名稱 :
選取 SQL server 要轉入的
表
- 15. 點選 [ 對應 ] ,確認兩個環
境的 轉欄位對應是否正拋
確,畫面右方為 SQL
server 的資料表欄位,左
邊為 Oracle 端的資料表欄
位
- 18. 從工具箱拉一個 [ 時序容器 ] 物件,把 3 個 [SQL 執行作業 ] 、 2 個
[ 資料流程工作 ] 工作拉進去,並指向流程方向,如下圖
流程方向紅線的設置,點選流程方向,按右鍵勾選 [ 失敗 ]
- 20. a. 點選 [ 檢視 ] – [ 其他視窗 ] – [ 變數 ]
b. 新增一變數,字首為 check_ 表格名稱,資料
類型為 String
- 22. 點選 [SQL 執行工作 ] ,修改
以下四個屬性
Connection :
Pro.sql2005
SQL Statement :
Name :
Check_tx_table
ResultSet :
單一資料列
SELECT decode(STATUS,'E ','1','2') As
check_TX_TABLE
FROM TX_SQL2005_SSIS_LOG
WHERE (LOG_TIME >= trunc(sysdate - 1))
AND (LOG_TIME < trunc(sysdate)) AND
(TABLE_NAME = 'TX_TABLE')
AND status<>'B' order by log_time desc
- 23. 點選 [ 結果集 ] ,修改下面
兩個參數
結果名稱 :
Check_tx_table
變數名稱 :
使用者 ::Check_tx_table
( 下拉選單 )
- 26. 拉出 [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
成功流程端
- 27. 點選 [ 資料流程工作 ] ,在工具箱把 [OLE DB 來源 ] 與 [OLD DB 目的地 ] 物
件拉入,並指向流程方向 ( 曳綠線拖 )
成功流程端
- 28. 點選 [OLE DB 來源 ] ,修
改以下三個屬性
OLD DB 連接管理員 :
Pro.sql2005
SQL Statement :
“SELECT column1, column2,column3, column4
FROM TX_TABLE
WHERE
UPDATE_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 詢,查
成功流程端
- 29. 點選 [OLE DB 目的地 ] ,
修改以下三個屬性
OLD DB 連接管理員 :
LocalHost.WebDB
資料存取模式 :
資料表或檢視 – 快速載入
資料表或檢視的名稱 :
選取 SQL server 要轉入的
表
成功流程端
- 30. 點選 [ 對應 ] ,確認兩個環
境的 轉欄位對應是否正拋
確,畫面右方為 SQL
server 的資料表欄位,左
邊為 Oracle 端的資料表欄
位
成功流程端
- 32. 點選 [SQL 執行工作 ] ,修改
以下三個屬性
Connection :
LocalHost.webuser
SQL Statement :
Delete from aceweb.tx_table
Name:
表格名稱
失敗流程端
- 33. 點選 [ 資料流程工作 ] ,在工具箱把 [OLE DB 來源 ] 與 [OLD DB 目的地 ] 物
件拉入,並指向流程方向 ( 曳綠線拖 )
失敗流程端
- 34. 點選 [OLE DB 來源 ] ,修
改以下三個屬性
OLD DB 連接管理員 :
Pro.sql2005
SQL Statement :
SQL 命令
Name:
將 Oracle 端要轉出的表,
填入 SQL 詢,查
在 where 條件子句要加上
update_time <=
trunc(sysdate)+5/24 這個
條件
失敗流程端
- 35. 點選 [OLE DB 目的地 ] ,
修改以下三個屬性
OLD DB 連接管理員 :
LocalHost.WebDB
資料存取模式 :
資料表或檢視 – 快速載入
資料表或檢視的名稱 :
選取 SQL server 要轉入的
表
失敗流程端
- 36. 點選 [ 對應 ] ,確認兩個環
境的 轉欄位對應是否正拋
確,畫面右方為 SQL
server 的資料表欄位,左
邊為 Oracle 端的資料表欄
位
失敗流程端
- 40. 點選 [SQL 執行工作 ] ,修改
以下三個屬性
Connection :
Pro.sql2005
SQL Statement :
[ 下頁說明 ]
Name:
Start_TX_TABLE ( 開始 )
Fail_TX_TABLE_1 ( 失敗 1)
Fail_TX_TABLE_2 ( 失敗 2)
End_TX_TABLE ( 結束 )
- 41. 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')