2011-07-04 42 views
1

我在SQL Server 2008上,我有一個數據量很大的字段。當我申請...如何獲取SQL Server中一個大型字段的內容?

DATALENGTH(field_name) 

...我瞭解我的領域是288.946個字符長,但在MS SQL Server Management Studio中,當我試圖複製粘貼的,一個簡單的SELECT的結果字段放到文本編輯器(記事本+)中,看起來SQL Server只打包了43.679個字符......或者說,在Windows中複製文本的緩衝區最多可以顯示多少個字符?我已經測試過,限制不是記事本+行大小或者其他......如果我複製粘貼到SQL Server中的新查詢窗口中,結果是限制爲43.679個字符的相同文本字符串。

嗯,問題是:我需要複製粘貼該字段的全部內容......有什麼特別的我應該在我的查詢中做什麼?謝謝。

+0

你能嘗試直接保存查詢結果到一個文件? –

+0

亞倫,我總是接受帶來解決方案或至少可用的最佳解決方案的答案,並且您發送了一個很好的答案,可以解決我的問題。謝謝!我建議你檢查我的帖子的歷史,看看我在說什麼。有時候,我只是在發送問題後不會坐在這裏,但我確信我會稍後回來從本論壇用戶提供的傑出答案中獲益,並批准最佳答案,併爲所有幫助我的答案投票。 –

回答

4

我在SQL Server 2008測試版中對此提出了一個錯誤。他們將其關閉爲「固定」,但後來評論說它是Vista問題的重複。因爲它出現在其他幾個SSMS這讓我吃驚/操作系統組合,以及包括迪納利CTP1在Windows 7

http://connect.microsoft.com/SQLServer/feedback/details/344150/ssms-grid-will-not-display-43-679-characters-from-varchar-max

所以,我不知道爲什麼他們稱之爲固定的,因爲它肯定仍然是一個真正的限制。

如果您有< 64K,您可以轉換爲XML,然後在網格模式下單擊結果。不幸的是,你不僅僅限於SSMS將能夠爲你獲得的東西。您需要按照別人的建議導出爲平面文件,使用其他程序完整地提取數據,或手動粘貼40000個字符的塊。在您的例子,你可以做這樣的事情:

DECLARE @foo TABLE (a VARCHAR(MAX)); 

INSERT @foo(a) SELECT REPLICATE('A', 8000); 

DECLARE @i INT = 1; 

WHILE @i < 36 
BEGIN 
    UPDATE @foo SET a += REPLICATE(CHAR(@i+64), 8000); 
    SET @i += 1; 
END 

SELECT DATALENGTH(a), a FROM @foo; 

SELECT SUBSTRING(a, 1, 40000), 
    SUBSTRING(a, 40001, 40000), 
    SUBSTRING(a, 80001, 40000), 
    SUBSTRING(a, 120001, 40000), 
    SUBSTRING(a, 160001, 40000), 
    SUBSTRING(a, 200001, 40000), 
    SUBSTRING(a, 240001, 40000), 
    SUBSTRING(a, 280001, 40000) 
FROM @foo; 

但是你必須通過增加更多的操作與值> 320K列進行調整。

+0

非常感謝您的詳細描述!最好的祝福。 –

+0

如何:'DECLARE @txt varchar(max) SET @txt =(從tblTest中選擇TOP 1 someText) print @ txt' – Magnus

+0

Magnus,你試過這個嗎?PRINT具有8000個字符的內置限制,所以只是簡單地打印結果不會起作用,因爲簡單地選擇結果不會起作用。 –

0

如果FOR XML AUTO添加到您的查詢,並與成果電網運行它,你會得到包含完整的XML結果TEXT字段的內容。

例如

SELECT large_field FROM MyTable --Limited to 65535 characters in Grid 
SELECT large_field FROM MyTable FOR XML AUTO --Limited to 2G characters in Grid in XML format 

然後,您可以將內容從SSMS的XML編輯器窗口複製並在你身邊感興趣的結果剝去XML。

+1

如果列的內容是XML,這很痛苦。 – gravidThoughts

相關問題