2010-04-30 85 views
15
截斷

我需要回到我的結果XML集,這工作得很好,但如果記錄的數量增加,我的XML輸出是truncated這裏是我的查詢XML輸出在SQL

select t.id,t.name,t.address from test FOR XML AUTO, ROOT('Response'), ELEMENTS 

不過我已設置一些選項來增加輸出結果集像..

Tools --> Options --> Query Results --> SQL Server --> Results to Text --> Maximum    
number of characters displayed in each column 
Tools --> Options --> Results --> Maximum characters per column 

但仍然我無法得到我想要的結果。

請建議我的解決方案

編輯:然而,當我點擊XML,它在另一個查詢窗口,在這裏顯示的所有XML開放,但它不會返回截斷XML的所有XML來代替。

謝謝....

+0

確保您重新啓動SSMS Management Studio以使這些更改生效。 – 2016-05-06 15:00:55

回答

6

我管理工作室和XML結果集有同樣的問題。我已經通過使用SqlDataReader以編程方式獲取輸出以解決此問題。

0

您在查詢輸出窗口中獲得的XML輸出並非真正用於保存 有效的XML文檔。當您使用ADO或SQLXML託管類將其捕獲爲流時,您可以從SQL Server獲取有效的XML。

但是,您可以通過使用 來限制查詢輸出大小在SQL Server Management Studio中,轉至工具> >選項>>查詢結果>> SQL Server >>結果到文本>>每列中顯示的最大字符數

-1

您可以將SQL Management Studio for 2008用於SQL Server 2005數據庫引擎。如果你這樣做,默認值應該足夠大,但在工具 - >選項 - >查詢結果 - > SQL Server中有一個結果到網格和結果到文本節點。

網格結果允許您明確控制XML數據的最大大小,默認最大大小爲2MB。

如果您沒有SSMS 2008的許可證,您應該可以免費使用快遞版here

1

如果您的XML結果集即使在更改SSMS選項後仍然被截斷,請在運行XML語句之前使用SQLCMD實用程序:XML ON選項。使用-o開關將輸出指向一個文件。 SQLCMD是一個非常簡單易用的命令行工具。見http://msdn.microsoft.com/en-us/library/ms162773.aspx

+0

可能僅適用於MS SQL 2008或更早版本。 MS SQL 2012將切斷它:https://connect.microsoft.com/SQLServer/feedback/details/786004/sqlcmd-with-xml-on-break-lines-on-large-output – Rod 2014-12-22 23:13:49

37

嘗試以下操作:

Declare @xmldata xml 
set @xmldata = (select ... From test for xml...) 
select @xmldata as returnXml 
+11

這應該是接受的答案 – 2014-11-25 16:19:45

+2

這讓我避免使用XmlReader。 – Edyn 2015-06-04 01:47:46

+2

這個答案對我很好,應該被標記爲答案。 – 2016-01-12 15:03:37

1

這爲我工作(SSMS 2012): 工具>選項>查詢結果> SQL服務器>結果到網格:最大重試的字符:XML數據:無限制。 然後我將網格的結果保存到一個文件中。

2

我有同樣的問題。我改變我的查詢結果設置爲無限,但它沒有工作。有一個工作。它不是很整潔,但如果你想繼續使用SQL Server Management Studio並獲得結果。調整的查詢使用存儲在XML轉換:返回

convert(xml,'<xml><![CDATA[' + cast(MyColumnWithXml as varchar(max)) + ']]></xml>') 

完整文本。請注意,您必須在您結束時執行一些格式化操作