簡體   English   中英

SSIS包查詢優化

[英]SSIS package Query Optimization

我想對如何修復程序中發現的一個小錯誤有個想法,該程序可以在我支持的Web訂購系統的Oracle數據庫和SQL Server數據庫之間傳輸數據。

問題是,當同一天下達兩個訂單(例如129和130)時,如果首先驗證了后續訂單(130) ,則先前的Web訂單(129)不會移至Oracle DB。 發生這種情況的原因是,該程序檢查轉移到Oracle DB的最大Web訂單,並嘗試僅將SQL Web訂單號移動到更高的水平。

在SSIS軟件包中構建的支持此概念的查詢如下:

在甲骨文方面

  Select nvl(max(web_order_id),0) maxOrderIDParam from web_shipping

在SQL Server方面

  SELECT cast(web_order_id as float) web_order_id, web_entry_date, site_num, protocol_num,    inv_num, cast(pharm_num as float) pharm_num, status, comments, username, porstatus 
  FROM        Web_Shipping
  WHERE web_order_id > ?
  AND status = 'V'
  ORDER BY web_order_id

在甲骨文方面

  insert into web_shipping (web_order_id, web_entry_date, site_num, protocol_num, inv_num, pharm_num, status, comments, username, porStatus) 
  values (:web_order_id, :web_entry_date, :site_num, :protocol_num, :inv_num, :pharm_num, :status, :comments, :username, :porStatus)

在SQL Server方面

     select cast(web_order_id as float) web_order_id, line_id, cast(no_of_participants as float) no_of_participants, cast(amt_inventory as float) amt_inventory, cast(NSC_num as float) NSC_num, cast(dose_str as float) dose_str, dose_unit, dose_form, dose_mult, cast(amt_req as float) amt_req 
     FROM web_ship_detail 
     WHERE web_order_id = ?

最后在甲骨文方面

    insert into web_ship_detail (web_order_id, line_id, no_of_participants, amt_inventory, NSC_num, dose_str, dose_unit, dose_form, dose_mult, amt_req) 
     values (:web_order_id, :line_id, :no_of_participants, :amt_inventory, :NSC_num, :dose_str, :dose_unit, :dose_form, :dose_mult, :amt_req)

努力設計出一種分辨率,使整個SSIS軟件包中的代碼更改最少。

我知道您正在尋找最小的代碼更改,不確定這些更改是否合格,但是會100%修復該問題。 有3個選項:

  1. 修改MS SQL表,並包括“ IsTransferred”位列。 將已驗證的記錄移至oracle后,將列更新為1 / true

  2. 跟蹤已轉移到Oracle的訂單的單獨表。 選擇MS SQL訂單時,請排除新的“已轉移”表中存在的訂單。

  3. 創建一個數據流對象,將Oracle&MS SQL訂單表作為源,使用合並聯接,並使用左外部。 使用Oracle列為空(沒有匹配的Oracle記錄,沒有轉移)的結果,並使用這些記錄轉移到Oracle。

不知道雙方都有多少條記錄,因此某些選項可能會影響性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM