2012-01-19 60 views
17

如何獲取SQL Server Management Studio中行的完整內容?如何從SSMS獲取完整結果集

如果您使用「網格結果」數據進行編碼,所以換行符等內容會丟失。如果您的結果是「文件結果」或「結果到文本」,則文本限制爲8192個字符。

注:我有解決方案,但我使用SO來記錄此。如果您有更好的答案,請隨時發佈。

回答

0

一個DBA的我公司提出了一個可行的辦法是把數據放到一個臨時變量,然後在循環中使用打印功能,像這樣:

DECLARE @contents varchar(MAX) 
SET @contents = '' 

SELECT  @contents = @contents + Contents + CHAR(13) 
FROM   dbo.tFOO 
WHERE  someConition 

DECLARE @tContents TABLE (id int IDENTITY, contents varchar(MAX)) 

WHILE @contents LIKE '%' + CHAR(13) + '%' 
BEGIN 
    PRINT SUBSTRING(@contents, 0, CHARINDEX(CHAR(13), @contents)) 

    SET @contents = SUBSTRING(@contents, CHARINDEX(CHAR(13), @contents)+1, LEN(@contents) - CHARINDEX(CHAR(13), @contents)) 
END 
35

我將其轉換爲XML

select @variable_with_long_text 
as [processing-instruction(x)] FOR XML PATH 

processing-instruction位有阻止它entitising字符,如<&lt;

+0

簡單地將它轉換爲xML會給你所有的數據?有趣的。 – javamonkey79

+0

爲了這個工作,我首先必須將我的列數據選擇到一個變量中,然後按照描述進行XML轉換。 – danjuggler

+0

可以將它變成一個聰明的函數或我能記得的東西 –

4

我開發一個外接對於SSMS - 「SSMSBoost」並且最近添加了「複製單元格內容1:1」特徵(可在網格的上下文菜單中訪問)。它會將您單元格中的所有數據返回給您,而不會進行任何修改並且不會截斷。

2

只要使用默認的「結果到網格,然後右鍵單擊網格結果,選擇‘另存結果......’CSV。

的全部內容將被保存在文件中,即使有換行符。一些varchar(max)列的內容大約爲3MB,並且保存成功,不會被截斷。