Tsql 使用VBScript将Active Directory提取到SQL数据库中

Tsql 使用VBScript将Active Directory提取到SQL数据库中,tsql,vbscript,ssis,Tsql,Vbscript,Ssis,我编写了一个VBScript来将数据从Active Directory提取到记录集中。我现在想知道,将数据传输到SQL数据库中最有效的方法是什么 我左右为难 将其写入excel文件,然后启动SSIS包以导入它或 在VBScript中,迭代内存中的数据集,并向SQL数据库提交3000+INSERT命令 后一个选项是否会导致3000多次往返与数据库通信,因此是两个选项中速度较慢的一个?逐行发送插入始终是最慢的选项。这就是所谓的逐行折磨行或RBAR。如果可能,您应该避免这种情况,并利用基于集合的操

我编写了一个VBScript来将数据从Active Directory提取到记录集中。我现在想知道,将数据传输到SQL数据库中最有效的方法是什么

我左右为难

  • 将其写入excel文件,然后启动SSIS包以导入它或
  • 在VBScript中,迭代内存中的数据集,并向SQL数据库提交3000+
    INSERT
    命令

后一个选项是否会导致3000多次往返与数据库通信,因此是两个选项中速度较慢的一个?

逐行发送插入始终是最慢的选项。这就是所谓的逐行折磨行或RBAR。如果可能,您应该避免这种情况,并利用基于集合的操作

您的另一个选择,写入中间文件是一个不错的选择,我同意@Remou在评论中的观点,如果您要选择此选项,您可能应该选择CSV而不是Excel


我将提出第三种选择。您的VBscript中已经包含了VB中的设计。您应该能够轻松地将其转换为SSIS中的脚本组件。创建一个SSIS包,添加一个数据流任务,向流中添加一个脚本组件(),将字段写入输出缓冲区,然后添加一个sql目标,并保存写入中间文件的步骤。这也是更安全的,因为在这个过程中,磁盘上的任何地方都没有明文形式的广告数据。

您没有提到这将运行多久,或者是否必须在某个时间窗口内运行,因此性能是否是一个问题还不清楚。“慢”本身并不意味着什么:如果时间窗口为一小时,那么运行30分钟的进程是完全可以接受的


只需编写最简单、最可维护的代码,就可以完成工作并从那里开始。如果它在可接受的时间内运行,那么您就完成了。如果没有,那么至少你有一个干净的、有效的解决方案,你可以分析和优化它

如果数据集中已经有它,并且它是SQL Server 2008+的话,请创建一个,并将整个数据集作为一个原子单元发送进来

如果你走SSIS路线,我有一个帖子