2008-12-23 104 views
1

我最近解決了一個問題,我的VB6應用程序使用ADO 2.8和AppendChunck方法將Recordset.Field保存爲大型二進制對象。如果數據太大,我會在for循環中得到'Invalid Handle'或'沒有足夠的系統存儲來執行此操作'。我通過發送塊到存儲過程並使用'updatetext'來解決這個問題。但是,在這樣做的情況下,由於8k的限制,我現在只能一次發送8k個字符。有人知道一個很好的解決方法嗎?以下是我的sproc。解決sql服務器存儲過程參數8k限制

@chunck binary(8000), 
@result_id int 

as 

declare @pointer binary(16), 
     @imagelength int, 
     @datalength int 


--get the pointer and length to the image column  
select @pointer = textptr(result_image), 
     @imagelength = datalength(result_image) 
from dbo.dash_result 
where result_id = @result_id 

if @pointer is null 

update dbo.dash_result 
set result_image = @chunck 
where result_id = @result_id 

else 

begin 

    --append the chunck of data to the end 
    set @datalength = datalength(@chunck) 
    updatetext dbo.dash_result.result_image @pointer @imagelength 0 @chunck 

end 

回答

0

對於sql server 2000,將參數聲明爲文本。請注意,它必須是一個參數,而不是一個本地變量,只有參數可以是文本,而不是本地變量。

+0

工作,但我不得不使用圖像,而不是文字。 – 2008-12-23 16:02:31

2

如果您使用的是SQL Server 2005中,你可以使用VARBINARY(MAX)數據類型或VARCHAR(MAX)數據類型,取決於數據要存儲類型。我相信這些可以容納2 Gig的數據。