sql-server - 带有 XML 目标列的包的性能下降

标签 sql-server ssis

在过去的几个月里,我完成了几个 SSIS 包,以将数据从旧数据库移动到 SQL Server 数据库。根据转换的不同,处理大约 500 万条记录通常需要 10-20 分钟。

我在使用其中一个包时遇到的问题是性能非常差,因为目标中的列之一是 SQL Server XML 数据类型。

 Data comes in like this: 5
 A script creates a Unicode string like this: <XmlData><Value>5</Value></XmlData>
 Destination is simply a column with XML data type

这真的很慢。有什么建议吗?
我做了一个 SQL Trace 并注意到在幕后 SSIS 在插入之前对每一行执行转换:
 declare @p as xml
 set @p=convert(xml,N'<XmlData><Value>5</Value></XmlData>')

最佳答案

尝试使用临时表来存储没有 XML 转换的 500 万条记录,然后使用 SQL Server 本身将它们从 tempDB 移动到最终目的地:

INSERT INTO final_destination (...)
SELECT cast(N'<XmlData><Value>5</Value></XmlData>' AS XML) AS batch_converted_xml, col1, col2, colX 
FROM   #tempTable

如果单个批次的 5.000.000 变成太多数据,您可以在较小的批次中进行(100k 行应该很有魅力)。

分析器捕获的记录看起来像一个 OleDB 转换,每行一个命令。

关于sql-server - 带有 XML 目标列的包的性能下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12982702/

相关文章:

sql - SQL Server是否可以自动记录存储过程错误

python - Unpickle 使用 SQLAlchemy pickle 的元素 "by hand"

sql-server - 在服务器代理中执行的 SSIS 包不执行其工作(即使报告成功)

sql-server - SSIS - 由于可能会丢失数据,因此无法转换该值

sql - 从 SSIS 生成 excel 但在每一列中都得到报价?

mysql - 使用链接 DB 中的另一个 SP 执行 SP

SQL Server 外键不允许我使用级联添加约束(删除或更新时)

sql-server - 无法使用 SSIS 中的表达式将字符串转换为 DateTime

sql - 如何查询名称中带有括号 ( ) 的 SQL 列?

java - JOOQ store() 不返回 ResultSet