前天有朋友的一個.net的網站出現問題了,是關于sql server 數據庫存儲導致的問題,具體問題是一旦這個詳情頁涉及到200個用戶以上就會出現報錯,200個以下就沒有問題,以下是sql server 數據庫修復過程。
今天抽空檢查了代碼,發現代碼里使用的是存儲過程只需動態SQL。把.net代碼里執行的sql語句手動逐一執行,發現代碼是根據m_id查出一個由200多個userid拼接成的字符串,然后傳到存儲過程的參數里。用id in(@userids)查詢數據,測試了一下當userids是幾個時是可以執行成功的,但是當超過200個時就會報錯。查看了存儲過程的定義發現 where 定義最多是1000個字符,而200個id的字符串就會超過1000個字符,從而會被截斷,從而導致sql語句執行出錯。
我點擊存儲過程->修改
修改為4000個字符后,點擊,就可生效
其實這種存儲過程在設計時候就有問題,不應該使用id拼接的方式來構建查詢語句,應該使用聯合查詢或者子查詢來完成。
執行存儲過程的方法是
exec dbo.proc_Pager "V_test','U_ID',1,20,'','CreateTime desc',' U_ID in (508,1185)';
至此,sql server 數據庫存儲導致的報錯問題已修復,希望出現類似故障的朋友可以參考一下。
塊是存儲的基礎架構,對塊的管理是簡單的。從全球第一個磁盤存儲技術50年前誕生到現在,...
存儲網絡技術主要是基于串行通信的SCSI規范,因此,分析它們的變化是理所當然的事,這些變...
在本系列的第一部分,我們討論了存儲虛擬化是如何實現不停機操作,并使用戶能夠通過改造...
容災技術是災備系統的核心,下面就從用戶切實的容災系統技術和工程可行性出發,對構建容...
筆者從事數據恢復工作好幾年,每天面對N多硬盤開盤數據恢復,怎么現在的硬盤特別容易損壞...
前天有朋友的一個.net的網站出現問題了,是關于sql server 數據庫存儲導致的問題,具體...
如何才能將網絡黑客阻擋在iSCSI SAN系統的大門之外?本文中將會推薦5種解決辦法。提醒讀...