我有一個存儲過程經常失敗,錯誤消息「Timeout expired」在特定用戶上。存儲過程在特定用戶上失敗
所有其他用戶都可以很好地調用sp,甚至我可以使用查詢分析器正常調用sp,只需10秒即可完成。但是,對於有問題的用戶,日誌顯示ASP總是掛起大約5分鐘,然後以超時中止。
我從ASP頁面調用像這樣「EXEC SP_TV_GET_CLOSED_BANKS_BY_USERS '006111'
」
有人知道如何診斷問題?我已經試着在數據庫中查看死鎖,但沒有找到任何。
謝謝,
我有一個存儲過程經常失敗,錯誤消息「Timeout expired」在特定用戶上。存儲過程在特定用戶上失敗
所有其他用戶都可以很好地調用sp,甚至我可以使用查詢分析器正常調用sp,只需10秒即可完成。但是,對於有問題的用戶,日誌顯示ASP總是掛起大約5分鐘,然後以超時中止。
我從ASP頁面調用像這樣「EXEC SP_TV_GET_CLOSED_BANKS_BY_USERS '006111'
」
有人知道如何診斷問題?我已經試着在數據庫中查看死鎖,但沒有找到任何。
謝謝,
我想回答你的問題,我們可能需要更多的信息。
例如,您是否使用Active Directory來驗證您的用戶?你使用SQL分析器進行調查嗎?這聽起來像是一個身份驗證問題,SQL Server在驗證這個特定用戶時遇到問題。
聽起來好像死鎖問題..
還要確保此用戶具有執行權限和讀取SQL Server中
權利,但如果當時信息被寫入其試圖將因爲交易尚未提交,因此讀取您將會死鎖。
傑夫做了一個偉大的職位,關於他的經驗和stackoverflow。 http://www.codinghorror.com/blog/archives/001166.html
幾件事情要檢查:
現在,我可以推薦一款商業軟件,它肯定能夠解決您的問題。它記錄了端到端的交易,並分析了特定的故障。但我不想在這個論壇上做廣告。如果你願意,給我留個便條,我會解釋更多。
嗯,我可以建議你使用SQL Server Profiler並打開一個新的會話。從ASP頁面調用存儲過程,看看發生了什麼。雖然這可能無法解決您的問題,但它肯定可以爲您提供一個開始對自己進行「調查」的起點。
一些想法...
閱讀註釋表明,參數嗅探是導致該問題。
如果該用戶已經遠遠這可能發生更多的行比其他用戶,或具有行與另一個表(因此不同的表/索引查找/掃描會更好)
爲了測試參數嗅探:
要解決: 面膜參數
DECLARE @MaskedParam varchar(10)
SELECT @MaskedParam = @SignaureParam
SELECT...WHERE column = @MaskedParam
不僅僅是谷歌「參數嗅探」和「參數屏蔽」
什麼您說的「特定用戶」指什麼? SP運行的用戶,還是您在查詢中使用的006111? – 2008-11-07 17:01:09
'006111'是失敗的用戶標識,但如果我在查詢分析器中調用這個標記,則SP在大約10秒內完成。 – 2008-11-07 17:03:21