2009-02-09 88 views
0

我正试图用MS SQL数据库中的用户信息填充来自多个数据源(即LDAP和一些其他MS SQL数据库)的信息。该过程需要作为每日计划任务运行,以确保用户信息表经常更新。如何有效地使用外部数据源更新数据库?

此查询/更新脚本的初始尝试是用VBScript编写的,它将查询每个数据源,然后更新用户信息表。不幸的是,这需要很长时间才能运行并更新用户信息表。

我很好奇,如果有人写了类似的东西,并且你推荐或注意到通过用另一种语言编写脚本来提高性能。由于多线程技术,一些人推荐使用Perl,但如果任何人有任何其他改进流程或其他方法的建议,您可以分享技巧或经验教训。

回答

0

我无法告诉您如何解决您的特定问题,但是无论何时遇到这种情况,您都希望在尝试解决问题之前找出原因缓慢的原因。减速在哪里?考虑并探讨一些重要的事情包括:

  • 获取数据
  • 与网络
  • 交互查询数据库
  • 数据库

更新指标得到一些时间和谱找出在哪里集中精力的信息。

0

嗯。好像你可以使用来自不同来源的转储使用情况的脚本,然后将输出结果放在适合目标数据库的load util的良好格式中。该脚本可以在bash或Perl中,无论如何。

编辑:就性能而言,我认为您要尝试的第一件事是确保您在加载过程开始时禁用任何自动提交,然后在写入所有记录后发出提交。这可能会造成巨大的性能差异。

2

使用数据转换服务(DTS)或SSIS是一种很好的做法,因为它已知可用于执行重复的数据库任务。虽然这不会解决你的问题,它可能给一些指点这是怎么回事,你可以登录过程的每个阶段,交易等,这是特别适合批量加载和更新包,然后将其理解的VBScript本地,所以应该没有问题。

除此之外,我与布莱恩同意,找出什么使得它缓慢而解决这个问题,改变语言是不可能解决它自身的,特别是如果你有一个潜在的问题。作为一个普遍的观点我的经验使用LDAP,这是非常小的时候,很可能是慢得令人难以置信读者批量用户的详细信息。

0

AS MrTelly说,使用SSIS或DTS。然后安排包运行。只是转换为仅此一项将probaly解决您的速度问题,因为他们有被批量插入优化的任务。无论如何,我绝不会用脚本语言来做这件事。可能你的脚本一行一行地,而不是一组数据,但这只是一个猜测。

相关问题