【发布时间】:2019-12-19 18:28:04
【问题描述】:
每天都有一个从 SQL Server 数据库生成 XML 文件的过程。
在内部,它被实现为一系列嵌套在存储过程中的“FOR XML...”查询。 Powershell 脚本执行存储过程并处理输出。
最近,存储过程生成的数据量超过2GB,由于SQL Server中对XML数据类型大小的硬限制,导致进程死亡。
我的问题是,绕过该限制的最佳方法是什么?显然,在 SQL Server 中使用 XML 数据类型是不可行的,但我猜人们会以某种方式确实从 SQL Server 数据库中生成大型 XML 文件。
【问题讨论】:
-
LOB 限制为 2GB。我认为您必须逐步解决此问题...
-
请分享您的存储过程。 bcp 命令行实用程序可能会生成大于 2GB 的 XML 文件
-
通常,为了便于管理、测试和传输,数据馈送可以拆分为多个文件。
-
不幸的是,我无法共享存储过程代码。它生成一个带有单个根、3 个 1 级、8 个 2 级和 ~800K 3 级嵌套数据的 xml。它使用各种带有索引、分组、排序和其他内容的#temptables。大约 80% 的体积被一组特定的 3 级节点(总共 70 万个节点)覆盖。我想我可以将节点拆分为多个块,然后将它们合并(作为文本)在 SQL Server 实例之外(使用一些命令行/Powershell 实用程序),但这很麻烦。我正在寻找可能不需要我重新设计整个事情的简单解决方案。
-
SQL Server 对 XML 数据类型的变量和列有 2GB 的限制。你在存储过程中使用它们吗?
标签: xml sql-server-2012 large-data