溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

通過C#查詢SQLServer數(shù)據(jù)庫超時

發(fā)布時間:2020-07-11 20:31:50 來源:網(wǎng)絡 閱讀:2229 作者:helicon80 欄目:編程語言

生產(chǎn)環(huán)境的系統(tǒng),在查詢數(shù)據(jù)的時候,日志記錄數(shù)據(jù)“Timeout 時間已到。在操作完成之前超時時間已過或服務器未響應?!?,“等待的操作過時”等,初步判斷是因為查詢超時導致的,根據(jù)源碼分析,獲取到查詢操作的SQL腳本,然后跟蹤到查詢業(yè)務的SQL參數(shù)信息,在數(shù)據(jù)庫中查詢,發(fā)現(xiàn)數(shù)據(jù)的返回時間小于1s,基本上是實時返回,排除了鎖表等操作。
后更改數(shù)據(jù)查詢的超時時間,改成3分鐘,系統(tǒng)還是報查詢超時。但是程序在測試環(huán)境,反復的測試,也沒有問題;而且程序昨天是正常的,數(shù)據(jù)量也沒有出現(xiàn)暴增的情況,整體的數(shù)據(jù)量也不大。
后通過網(wǎng)絡查詢,發(fā)現(xiàn)有重啟服務器解決該問題的方法,但是由于是生成環(huán)境,沒法進行重啟服務器,客戶在等,很是著急。后在通過萬能的網(wǎng)絡,查詢到,可能是參數(shù)化傳參導致的,傳遞參數(shù)的SqlDbType和數(shù)據(jù)庫里的類型不一致會導致出現(xiàn)數(shù)據(jù)庫上直接查詢,返回數(shù)據(jù)很快,但是通過程序去查詢,會出現(xiàn)查詢超時的情況。然后去檢查程序和數(shù)據(jù)庫,發(fā)現(xiàn)確實不一致,程序中使用的是SqlDbType.VarChar,但是在數(shù)據(jù)庫存儲中使用的數(shù)據(jù)類型是NVarChar。
然后修改程序的SQL語句不是參數(shù)化傳參,改為拼接的方式,然后發(fā)布程序,登錄檢測,發(fā)現(xiàn)程序正常返回數(shù)據(jù),這樣看來,問題就出現(xiàn)在C#程序中的參數(shù)化的參數(shù)類型和數(shù)據(jù)庫中的類型不一致導致的。
這個Bug,是個隱藏的Bug,問題不會一直出現(xiàn),因為程序中這樣操作的,不僅僅是這個查詢的一處地方。這次的問題比較特殊,做個記錄,以備下次查詢。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI