今天客戶反饋到這樣乙個問題,同樣乙個頁面不同的使用者進入,有些使用者不會出錯,有些使用者則顯示:
sql錯誤:超時時間已到。在操作完成之前超時時間已過或伺服器未響應。這樣的錯誤。
於是我查了一下資料庫,發現凡是出錯的使用者都具有相同的乙個特點:就是資料量較大。
再查詢程式,原來sql語句:用了function,function 裡還用了游標。
select *,dbo.f_acceptunit as unit from iw_sendinfo
create function f_acceptunit(@sid int ,@uid int)
returns varchar(4000)
asbegin
declare @unitname varchar(1000),@unit varchar(4000)
set @unit=''
declare dname_cursor cursor for
select dname from iwuser where id in (select userid from inceptinfo where sid=@sid and userid!=@uid)
open dname_cursor
fetch next from dname_cursor
into @unitname
while @@fetch_status = 0
begin
fetch next from dname_cursor
into @unitname
set @unit =@unit+ @unitname +','
endclose dname_cursor
deallocate dname_cursor
return @unit
end sql2000裡面本來游標的效能就比較低下,然後sql裡面再查詢function,無疑是雪上加霜。游標還是慎用為好啊!
sql2000 游標的使用
一般情況下游標的使用應遵循以下5個步驟 1.宣告游標 2.開啟游標 3.從游標讀取行,並有選擇地進行處理 4.關閉游標 5.釋放游標 use pubs 宣告變數 declare title varchar 100 price smallmobey 宣告游標 declare price cursor ...
SQL2000檢視表的大小
以前檢視乙個巨大的資料庫,想把裡面沒用的東西刪了,減少資料庫檔案的大小,但是不知道如何或者其中某個表的大小,後來經過一番努力終於找到如何檢視sql server 2000 中資料表大小的方法了,在sql server 2005中,微軟發布了乙個報表,可以直接檢視,但是這個報表不能用於sql serv...
解密SQL2000的儲存過程
內容來自網際網路,作者不明 drop procedure sp decrypt gocreate procedure sp decrypt objectname varchar 50 asbegin begin transaction add by playyuer declare objectna...