2016-06-28 87 views
0

我有一個問題,我構建的用於處理某些數據的存儲過程在由SQL Server代理運行時似乎無法正常工作。如果我手動執行這項工作,一切正常。我也沒有錯誤。當SQL Server代理運行時,SQL Server存儲過程似乎不起作用

基本過程是我有三個源表(A,B,C),每個都是針對不同類型的服務。它們用於計算價值,由於計算過程每年都有所不同,因此有多個結果,因此ID B43將得出結果15,結果16對應於2014/15和2015/16財年。最終結果存儲在包含每個記錄的ID,Type和兩個結果值的主表中。

爲了使這項工作,我有六個順序運行的存儲過程,首先爲14/15計算,然後爲15/16計算。

每個存儲過程的一般結構是獲取數據,根據一些映射表對其進行操作並創建一個CalculationInput表,該表只是在那裏查看審計檢查的計算輸入。一旦完成,實際計算就會發生,並將結果存儲在臨時表#Results中。在創建臨時表之後,我創建了一些索引,然後調用另一個存儲過程,在財政年度中傳遞一個參數,該參數接受臨時表並在主表上執行插入更新。之後,存儲過程結束,並且下一個被調用。

StoredProcA15 -> InsUpdProc 
StoredProcB15 -> InsUpdProc 
StoredProcC15 -> InsUpdProc 
StoredProcA16 -> InsUpdProc 
StoredProcB16 -> InsUpdProc 
StoredProcC16 -> InsUpdProc 

正如我之前說過的,如果我右鍵單擊作業並執行它,那麼這很好地工作。但是,如果我等待一週並查看主表,則新記錄將不會存在,儘管它們位於源表中以及CalculationInput表中。如果我然後運行構建臨時表的代碼段,那麼結果就會出現在那裏。

所以我最好的猜測是失敗的根源是對插入/更新過程的調用。在不瞭解SQL Server併發性的情況下,我想知道父存儲過程是否在等待插入/更新過程結束之前完成並轉到下一個存儲過程。

這是否可能?如果是這樣,解決它的最好方法是什麼?

+0

什麼[SQL Server代理錯誤日誌(https://msdn.microsoft.com/en-us/library/ms175488(V = SQL.105)的.aspx)? –

+0

沒有錯誤信息 – Matt

回答

0

聽起來像是一個權利問題給我。檢查Windows服務「SQL Server代理」正在運行的用戶標識。要排除故障,請將其更改爲擁有數據庫權限的Windows登錄名,並確保密碼永不過期。

爲了做到這一點:

從控制面板 - >管理工具 - >服務 - > SQL Server代理 - >右鍵 - >屬性 - >登錄選項卡 - >此帳戶 - - >你的Windows ID/pswd - >點擊確定保存

試試這個工作有一個時間表,要求它每5分鐘運行一次(所以你不必等待幾天大聲笑),並執行一個虛擬人sp並觀察它是否通過調度程序執行幾次。

從Windows註銷,它應該仍然繼續。

希望幫助

+0

奇怪的是,雖然它有90%的時間工作。我想如果這是一個權限的事情,它永遠不會工作 – Matt