金蝶K3wish15.1職員表‘’增刪改查‘’錯誤問題

近期在維護金蝶wish時,遇到職員表(t_emp)的保存操作時存在查詢報錯問題,具體報錯代碼段如下:

錯誤代碼:3633(E31H)
Source  :Microsoft OLE DB Provider for SQL Server
Detail  :查詢超時已過期

出現該代碼後,假死調用中間層。而後製作單據時引用職員表內修改的用戶顯示:無權限或者不存在的。同時在使用SQL語句在t_Emp表中也未發現該用戶。遂開始查閱相關資料,根據資料顯示:

職員表t_Emp 是一個視圖,該視圖是由基本表t_Base_Emp 和hr_Base_Emp關聯查詢的數據。修改職員時報錯是因爲新增職員時系統沒有往表hr_Base_Emp 中寫數據,而導致讀寫異常的原因是該帳套丟失了系統定義在職員視圖表t_Emp 中的觸發器“trg_t_Emp_InsUptDel”

該段提示僅僅提供了問題產生的思路,經查驗觸發器發現並未出現丟失現象,遂問題具體原因還需進一步探究。問題轉向進程原因,連接到對應賬套的數據庫中執行如下代碼查看進程id:

select    
    request_session_id spid,   
    OBJECT_NAME(resource_associated_entity_id) tableName    
from    
    sys.dm_tran_locks   
where    
    resource_type='OBJECT' 

發現進程中spid存在多個id號爲189的t_emp進程,對進程進行kill 189操作後發現,用戶已經正常,但是在對該用戶進行維護時資料仍不能修改,遂借鑑上述問題的產生原因,將hr_Base_Emp的進程id一併殺死,發現問題解決,一切正常。

問題總結:

1.找到sql進程並對死鎖報錯進程進行手動殺死操作;

2.殺死與之相關的併發進程(如殺死t_emp進程時,也應一併殺死hr_Base_Emp進程)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章