2009-02-09 89 views
0

我正試圖用MS SQL數據庫中的用戶信息填充來自多個數據源(即LDAP和一些其他MS SQL數據庫)的信息。該過程需要作爲每日計劃任務運行,以確保用戶信息表經常更新。如何有效地使用外部數據源更新數據庫?

此查詢/更新腳本的初始嘗試是用VBScript編寫的,它將查詢每個數據源,然後更新用戶信息表。不幸的是,這需要很長時間才能運行並更新用戶信息表。

我很好奇,如果有人寫了類似的東西,並且你推薦或注意到通過用另一種語言編寫腳本來提高性能。由於多線程技術,一些人推薦使用Perl,但如果任何人有任何其他改進流程或其他方法的建議,您可以分享技巧或經驗教訓。

回答

0

我無法告訴您如何解決您的特定問題,但是無論何時遇到這種情況,您都希望在嘗試解決問題之前找出原因緩慢的原因。減速在哪裏?考慮並探討一些重要的事情包括:

  • 獲取數據
  • 與網絡
  • 交互查詢數據庫
  • 數據庫

更新指標得到一些時間和譜找出在哪裏集中精力的信息。

0

嗯。好像你可以使用來自不同來源的轉儲使用情況的腳本,然後將輸出結果放在適合目標數據庫的load util的良好格式中。該腳本可以在bash或Perl中,無論如何。

編輯:就性能而言,我認爲您要嘗試的第一件事是確保您在加載過程開始時禁用任何自動提交,然後在寫入所有記錄後發出提交。這可能會造成巨大的性能差異。

2

使用數據轉換服務(DTS)或SSIS是一種很好的做法,因爲它已知可用於執行重複的數據庫任務。雖然這不會解決你的問題,它可能給一些指點這是怎麼回事,你可以登錄過程的每個階段,交易等,這是特別適合批量加載和更新包,然後將其理解的VBScript本地,所以應該沒有問題。

除此之外,我與布萊恩同意,找出什麼使得它緩慢而解決這個問題,改變語言是不可能解決它自身的,特別是如果你有一個潛在的問題。作爲一個普遍的觀點我的經驗使用LDAP,這是非常小的時候,很可能是慢得令人難以置信讀者批量用戶的詳細信息。

0

AS MrTelly說,使用SSIS或DTS。然後安排包運行。只是轉換爲僅此一項將probaly解決您的速度問題,因爲他們有被批量插入優化的任務。無論如何,我絕不會用腳本語言來做這件事。可能你的腳本一行一行地,而不是一組數據,但這只是一個猜測。

相關問題