2011-02-23 77 views
2

我有一個查詢返回大的XML,在極端情況下它的大小可以達到1GB,但通常需要數百兆字節。SELECT ... FOR XML into a file

客戶端程序一次接收所有數據並將其保存在內存中的明顯方法在這種情況下不起作用。

有什麼辦法可以將SQL Server輸出結果寫入文件嗎?或者,也許它可以一件件地交付結果數據?在後一種情況下,將輸出指向文件而不將所有內容加載到內存都是微不足道的。

根據問題陳述,得到的XML將被XSLT轉換,這將產生更小的結果。理想情況下,服務器應該被指示將XML數據輸出到可以連接到作爲單獨進程運行的xslt引擎的管道中。但是我沒有看到任何方式來做到這一點。

有什麼想法嗎?

謝謝。

客戶端程序是3

SQL Server版本是2005,但是如果2008年只是,這種限制不應該被認爲是必要的

+0

對於這個問題,它的事項正在使用的客戶端API。 – 2011-02-23 21:11:48

+0

感謝您的通知,我修改了我的配方。 – Mooh 2011-02-23 21:18:40

回答

2

假設你存在一些非常好的解決方案是使用在C#編寫.NET語言和ADO.NET,這裏

http://www.csharp-station.com/Tutorials/AdoDotNet/Lesson02.aspx

你找到一個例子,如何對結果集的SQL SELECT飼料來使用SqlDataReader的控制檯流。用文件流替換控制檯,就完成了。

不幸的是,這隻有在您的XML以逐行方式存儲在多個文本行中時纔有效。如果您的XML存儲在BLOB字段中,則需要某種分塊。閱讀這篇文章,如何做到這一點:

http://support.microsoft.com/kb/317034/EN-US