2014-01-08 28 views
0

我們有一個傳統的經典ASP應用程序,它使用ADODB將文檔存儲在SQL Server的映像列中。我們遇到的問題是單字節從大多數文件中丟失。我們有一個文件不會丟失字節的實例,所以我認爲它可能與大小有關。在SQL Server映像列中存儲數據時丟失一個字節

到目前爲止,我們有..

  • 驗證正確的字節長度被傳遞到ADODB CreateParameter電話。
  • 使用SQL Server BCP工具來驗證文件是否在SQL Server中損壞,而不是由我們提取。當我們用BCP提取文件時,它丟失了字節AND,我們確實使用了-w參數。

有沒有人有什麼建議我們可以嘗試接下來做什麼?

UPDATE:

我們已經做了一些調查研究,它似乎字節在ADODB消失。我們這樣做..

cmd.Parameters.Append cmd.CreateParameter( 「SupportDocImage」,adLongVarBinary,adParamInput,lSize所,sFilePath)

如果lSize所將是123139和sFilePath是二進制數據(是的...壞的命名)

這實際上調用存儲過程,並在該存儲過程中,我們將做一個DATALENGTH(@Variable),我們反而得到123,138。

從我們所看到的也是最後一個丟失的字節。

+0

任何特定的字節?這是最後一個嗎? – UnhandledExcepSean

+0

它似乎總是最後一個字節,但我會用pdf來驗證。 –

+0

SQL語句是怎樣的?嘗試在插入後立即選擇數據長度('select data_length(col)'),以確保稍後沒有任何內容修改數據。 – usr

回答

0

看看這篇文章。

該解決方案適用於Oracle,但它同樣使用ADO。

http://forums.devshed.com/visual-basic-programming-52/inserting-blob-s-via-adodb-stream-using-a-stored-procedure-103030.html

嘗試增加+1的大小。

另外,您是否在上傳圖片時檢查了此屬性。

cmdSQL.Properties(「SPPrmsLOB」)=真

無論如何,仍然必須寫一個存儲過程,需要一個VARBINARY(最大值)或圖像數據類型,並將其插入到表中。

+0

我們確實嘗試了+1的大小,並仍然有它打破。SPPrmsLOB是基於該鏈接的Oracle提供商特定設置+ Google –

+0

請發佈整個vb腳本,以便我可以嘗試。 –

相關問題