我有一個帶有SQL2012數據庫的經典ASP應用程序。我最近將表列從varchar(8000)更改爲varchar(max),因爲它不足以存儲所需的數據。返回varchar(max)存儲過程中的輸出參數截斷爲4000個字符
我可以使用所有需要存儲的數據更新列,但是我使用SP作爲輸出參數返回列數據只返回4000個字符(至少這是以下代碼的結果是給我:
Len(cmd.Parameters("@detail").Value)
我用下面的參數聲明爲調用部分SP:
cmd.Parameters.Append cmd.CreateParameter("@detail", 8, 2, -1, strDetail)
8是用於adBStr的價值,我試圖改變8 200,201和203,但是這給出了以下錯誤:
Error: 800a0e7c
Description:
Parameter object is improperly defined. Inconsistent or incomplete information was provided.
我認爲更新數據將是艱難的一點,但我不能找出如何檢索列的全部內容。
我返回列的DATALENGTH,它表示長度爲10,536,但我只能獲得4,000個字符,包括通過輸出參數返回的空格。我可以從Visual Studio中看到所有的數據(10k個字符),所以我知道它在那裏。
我的連接字符串Provider = SQLOLEDB.1。這可能是一個問題嗎?我應該使用較新的SQL Server Native Client 11.0 OLE DB Provider - SQLNCLI11嗎?
任何人有任何想法?
乾杯, Mike。
你不能只使用文本列而不是VARCHAR,那麼你可以爲你喜歡(當然,最大支持2GB),進入儘可能多的字符 – John
我的理解是文本被SQL2005棄用。無論如何,Varchar(max)都可以提供高達2GB的相同能力。我已經閱讀了關於由varchar(max)隱式轉換爲varchar的截斷髮生,但我無法看到在我的情況下會發生什麼。感謝您的評論。 – Mike
http://stackoverflow.com/questions/834788/using-varcharmax-vs-text-on-sql-server 連接字符串 - 不是問題 – Zam