我有一個填充SQL Server 2008 R2 DataWarehouse的SSIS包,當它從頭開始重新創建DW時,它會進行數百萬次調用一個存儲過程,在計算方面做了繁重的工作。SQL性能 - SSIS需要2分鐘來調用SProc,但SSMS需要<1秒
問題是SSIS包需要幾天才能運行,不應該花那麼長時間。關鍵似乎是,當SSIS包調用SProc時,SProc需要大約2分鐘才能返回結果。但是,如果我手動重新創建呼叫(在同一個數據庫上),則需要< 1秒才能返回結果,這正是我所期望的。
看到這個屏幕截圖,頂部是SQL Profiler Trace,顯示SSIS包的通話時間爲130秒,底部是我的通話重置,以1秒爲1秒的時間獲得<。
http://screencast.com/t/ygsGcdBV
存儲過程的查詢數據庫,通過與遊標結果迭代,確實在對記錄大量的計算,並amalgamates數量爲2分的結果,其得到恢復。
然而,手動調用的時間表明,這對於SProc本身並不是問題,或者是與數據庫本身有任何索引問題,那麼爲什麼SSIS包會比手動調用花費更多的時間呢?
任何提示理解。
感謝,
很多在這裏的可能性。首先是參數嗅探,然後是不同的設置選項。明確的論文是[在應用程序慢,快於SSMS](http://www.sommarskog.se/query-plan-mysteries.html),但@PaulWhite對[慢存儲過程執行]更簡明的響應(HTTPS ://answers.sqlperformance.com/questions/346/slow-stored-proc-execution-on-log-shipping-seconda.html) – billinkc