我在SQL Server商业智能开发Studio中创建SSIS包。 该软件包工作正常,如果我在它上面运行,所以我部署的包。
然后我用的包安装向导并安装它本地SQL Server 2005上。
现在,我想在我的触发器来使用它。
我知道如何从文件中执行一个包,但如何我执行它时,它被安装在SQL Server?
谢谢。
我在SQL Server商业智能开发Studio中创建SSIS包。 该软件包工作正常,如果我在它上面运行,所以我部署的包。
然后我用的包安装向导并安装它本地SQL Server 2005上。
现在,我想在我的触发器来使用它。
我知道如何从文件中执行一个包,但如何我执行它时,它被安装在SQL Server?
谢谢。
正如我前面提到的:我不会把这样的任务为触发。 由于当多少次触发器被激发你无法控制,在触发任何应在执行时间很短。 不要把长时间运行加工成触发!
我的做法是:
触发写入一个条目为表(一个“工作”表或任何你想将它命名)
运行例如每5分钟一个任务(如SQL代理作业)。 或任何读取该表,并在必要时写入文件。
这样可以使从实际写入文件中较长的过程触发器代码。
否则,你的系统性能将受到严重坏的方式通过这种可能非常长时间运行的触发影响....
还有就是从T-SQL执行SSIS的包的方式,但一个相当取消保存一个,我想。 它涉及启用“xp_cmdshell的”选项,并用DTEXEC。 但是,这并不definetly在触发使用! 任何方法,marc_s在他的评论中指出,一个触发应该很瘦。 既然是触发命令的任何长期运行的操作,尤其是SSIS包的交易的一部分,将大大下降减缓你的数据库。
我想打破这种分成不同的步骤。 该文件要求可能是有,但考虑这一点:只要每一行生成一个文件,是一个真正的交易断路器,如果它需要也许五到十分钟创建的文件? 而这是不是更糟糕的敲上你会从扳机中运行的SSIS包看到效果?
所以:
步骤1:将触发简单地将行插入有用于将要创建的文件所需的信息的另一表。
第2步:修改您的SSIS包有一个额外的早期步骤是民调表,任何新项目,创建所需文件,然后标记为完成条目(或者完全删除它们,但我个人喜欢的审计追踪)。
第3步:计划作业添加到运行该SSIS包每隔5分钟服务器。
如果你不想修改SSIS包,您可以改为创建一个存储过程,民意调查表并执行了这个包,并计划在工作。 最主要的是,从发射包从触发直接的想法脱身。
上述方法,也将最大限度地减少潜在问题的影响,如文件的目的地是出于某种原因无法使用。
只是补充所有其他的答案,你应该明确地这样做。 插入数据表,并有工作每隔X分钟的marc_s的想法在我看来是最好的apporach。
PS1: 这里是如何从一个SP调用包的链接
PS2:Ansering你的其他questiom,调用使用DTEXEC存储在SQL中的包,只需更换/FILE
到/SQL
dtexec /sql "\YourPackage"