2008-10-30 51 views
0

我环顾四周,发现了一些关于如何做到这一点的想法,但没有明确的最佳方式。其中一个想法是使用sp _ start _作业启动运行DTS包的SQL Server代理作业。如果这是做到这一点的最佳方式,那么下一个问题将是“我如何从工作中安排DTS包并使其不再发生?”从触发器执行MS SQL Server 2000 DTS包的最佳方法是什么?

感谢, 添

回答

1

我不会建议将这种功能绑定到触发器。触发器应该是快速的。我不认为有什么办法可以启动一个DTS包,其速度将快于I想要的触发器。如果这与你产生共鸣,那么我建议让你的触发器简单地将一行插入一个特殊的表中,然后有一个工作按你的需要执行(每10分钟一分钟?),监视这个表并根据需要启动适当的DTS包。

0

而不是使用XP _ CMDSHELL的,我这样做:

当表中的更改一定值时,触发器使用msdb.sp _开始_工作开始作业。此作业不应按计划运行,只能在用户发起时执行。我将作业计划设置为运行一次,现在是过去的时间,并且取消选中启用的框。

此工作有一个步骤,即DTSRun /〜Z0xHEXENCRYPTEDVALUE。 DTS软件包将该服务器的某些行复制到另一个平台上的另一台服务器上,并在下次使用触发器成功复位表中的值。在调用sp _开始_作业之前,触发器会检查表值,以使作业仅在某些情况下启动,而不是每次启动。

由于sp _开始_作业异步运行,触发器快速完成。唯一的缺点是,我需要轮询成功重置的值,并让用户知道它的工作原理,或者在某段时间后,它不起作用。

如果我需要同步操作,则可以使用xp_cmdshell,这可能不是触发器内部的一个好主意。

相关问题