当数据很大时,如何选择SSIS软件包



我有一个table table_src,其中一个SQL Server DB中有300万列和20列 我想将数据加载到另一个服务器和SQL Server DB中的同一结构Table_dest中 我刚刚创建了一个OLEDB源,该源将从表_src获取数据,然后使用OLEDBCommand从table_dest删除现有数据 然后使用OLEDBDESTINATION将数据映射和加载来自Table_src的数据到table_dest。

但是这个过程花费了太多时间,因为数据很大,我知道这需要时间,但是在这种情况下,我可以优化或使用一些最佳实践来加载数据。

  1. 不要使用ole db命令。它执行单例操作,这意味着您将在远程服务器上发布3M删除。相反,将控制流程设计为Execute SQL Task,然后将Data Flow Task设计。在评论中,您指出权限将成为一个问题,因为您不能发出截断表命令。相反,执行SQL任务将需要DELETE FROM dbo.MyTable;来排出所有数据。

  2. 确保您将快速负载选项与OLE DB目标使用。这将锁定目标表以获得最佳的负载模式。您可能想尝试最大行提交大小(名称大致(。默认值为20亿左右,尝试从50000开始启动。这比一次批量的批次要小。这可以帮助目标服务器在将所有数据消失时获得一些呼吸空间。

其他会杀死您的表现的事情:

  • 不良网络
  • 数据流中的其他转换(我假设OLE DB源到Ole DB目标(
  • 在Visual Studio本身中运行软件包
  • 以32位模式运行软件包
  • 调谐目标服务器
  • 不要处理数据流任务中的LOB数据类型(Image/Object/(n(文本/(n(varchar(max(/varbinary(max((

除此之外,没有更多的详细信息,那就是我可以给您的建议,以使其快速发展。每小时不应该发送300万行。

oledb destination下的 data access mode中尝试使用fast load的选择(在您的情况下table or view fast load(

不要删除并插入日期。使用SSIS软件包使用SQL更改跟踪来插入增量数据。

相关内容

  • 没有找到相关文章

最新更新