我們在其中一個存儲XML文件的表中有nText字段。我們能夠在nText字段中保存大約40-50 MB的大型XML。但是,當我們嘗試像 那樣選擇從archive_id = 123的存檔中選擇archive_xml時,超時。在SQL中超時讀取大nText列
任何替代或任何建議?
感謝, Ĵ
我們在其中一個存儲XML文件的表中有nText字段。我們能夠在nText字段中保存大約40-50 MB的大型XML。但是,當我們嘗試像 那樣選擇從archive_id = 123的存檔中選擇archive_xml時,超時。在SQL中超時讀取大nText列
任何替代或任何建議?
感謝, Ĵ
當你說這是超時,它是超時在服務器上或者在你的代碼?這可能影響不同的解決方案
如果它是一個服務器的問題,確保表中有您所查詢的字段(例如archive_id)
,如果它在代碼超時「簡單」的解決方案是延長用戶的連接超時有意義的指標。我會先嚐試其他的東西,比如提高服務器性能,因爲連接超時通常會隱藏更大的問題。
根據MSDN 如果ntext,文本和圖像數據值不超過Unicode,則爲4,000個字符;字符,8000個字符;或二進制字符串(8,000字節),可以在SELECT,UPDATE和INSERT語句中引用該值,這與更小的數據類型的引用方式大致相同。例如,可以在SELECT語句選擇列表中引用具有短值的ntext列,這與引用nvarchar列的方式相同。必須遵守一些限制,例如不能直接引用WHERE子句中的ntext,text或image列。這些列可以包含在WHERE子句中作爲返回另一個數據類型(例如ISNULL,SUBSTRING或PATINDEX)的函數的參數,或者包含在IS NULL,IS NOT NULL或LIKE表達式中。
處理大數據值 但是,當ntext,text和image數據值變大時,它們必須逐塊處理。 Transact-SQL和數據庫API都包含允許應用程序逐塊處理ntext,text和image數據的函數。
數據庫API按照處理長的ntext,文本和圖像列的一種通用的模式:
要讀取長列,應用程序只包括NTEXT,文字,或在選擇圖像列列表,然後將該列綁定到一個足夠大的程序變量,以保存合理的數據塊。應用程序然後執行該語句,並使用API函數或方法一次將數據檢索到綁定變量中。
要編寫長列,應用程序將執行帶有參數標記(?)的INSERT或UPDATE語句,以替換放置在ntext,text或image列中的值的位置。參數標記(或ADO情況下的參數)綁定到足夠大的程序變量以容納數據塊。應用程序進入一個循環,首先將下一組數據移動到綁定變量中,然後調用API函數或方法來寫入該數據塊。重複此操作直到整個數據值被髮送完畢。
archive_id索引? – taylonr 2011-04-19 15:18:27