如何在DataFlowTask OLE DB目的地使用FastLoadOptions ORDER ?



我正在使用SSIS-Designer(独立作为DataTools的一部分或作为Visual Studio的扩展)。我在一个集成服务项目。在DataFlowTask中,有一个名为"FastLoadOptions"的OLE DB目的地的自定义属性。如果输入的数据是排序的(即聚类索引),则可以使用参数"order"。文档给出了

的语法
ORDER <column name> ASC|DESC

这个语法不起作用。执行时会出现语法错误。

如果我使用未记录的语法

ORDER (<column name> ASC|DESC)

没有错误信息,一切似乎都正确。对于非常大的数据,这个选项可以显著加快传输速度。也应该尽量少记录传输日志。

该选项是否适用于未记录的语法?是否可以检查此选项的预期影响?

我认为使用括号的第二种语法必须是正确的,特别是在使用多列时。此外,此语法与批量插入语法相匹配:https://learn.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-ver16

就最小日志记录和性能而言,我建议检查此表以及与ssis和oledb目的地相关的部分:https://learn.microsoft.com/en-us/previous-versions/sql/sql-server-2008/dd425070(v=sql.100)?redirectedfrom=MSDN#summarizing-minimal-logging-conditions

文章中的一些信息已经过时了,在较新的版本中,您不再需要打开跟踪标志610。然而,这里有一些关键的注意事项:

  • 如果要插入到堆中,必须使用TABLOCK。如果NC索引存在,将被完整记录。
  • 在上述情况下,可以并发加载,因此可以使用平衡数据分发器组件将负载分发到多个OLEDB目的地
  • 如果你正在加载一个聚集索引,使用TABLOCK和ORDER。
  • 使用SSIS,批大小将是缓冲区的大小或OLEDB目标中的最大插入提交大小设置。这意味着您可能在第一批上获得最少的日志记录,但在那之后获得完整的日志记录,这取决于具体情况。你可以覆盖这个通过设置最大插入提交大小为0
  • 要知道这些是否有效,你必须用不同的设置对其进行基准测试。确保负载测试是按照生产环境中的方式设置的。如果prod中的表中有行,请确保在负载测试环境中也有行。

最新更新