如何在DTS数据转换任务中使用存储过程?

时间:2020-03-05 19:00:03  来源:igfitidea点击:

我有一个带有数据转换任务(数据泵)的DTS软件包。我想使用带有参数的存储过程的结果来获取数据,但是DTS不会预览结果集,也无法定义数据转换任务中的列。

有没有人得到这个工作?

警告:存储过程使用两个临时表(当然,还要清理它们)

解决方案

回答

我们实际上需要将它们加载到表中,然后,如果必须进行翻译,则可以使用SQL任务将其从该表移至烫发位置。

但是,我发现,如果使用存储过程来获取数据,则几乎可以同时将其移动到其目的地一样快捷和容易!

回答

不,我只能使用DTS存储过程,方法是将状态保存在剪贴表中。

回答

为存储过程参数输入一些有效值,以便它运行并返回一些数据(甚至没有数据,我们只需要这些列)。然后我们应该能够进行映射等。然后进行断开连接的编辑并更改为实际参数值(我假设我们是从全局变量获取它们)。

DECLARE @param1 DataType1  
DECLARE @param2 DataType2
SET @param1 = global variable  
SET @param2 = global variable (I forget exact syntax)  

--EXEC procedure @param1, @param2  
EXEC dbo.proc value1, value2

基本上,我们可以像这样运行它,以便该过程返回结果。进行映射,然后在断开连接的编辑中注释掉第二个" EXEC",并取消注释第一个" EXEC",它应该可以工作。

基本上,我们只需要使过程运行并吐出结果即可。即使我们没有返回任何行,它仍将正确映射列。我无权访问我们的生产系统(甚至数据库)来创建dts包。因此,我在虚拟数据库中创建了它们,并将存储过程替换为返回生产应用程序将运行的相同列但没有数据行的存储过程。然后,在完成映射后,我将其与实际过程一起移到生产盒中,并且可以正常工作。如果我们通过脚本跟踪数据库,则此方法非常有用。我们可以只运行脚本来构建一个空的Shell过程,完成后再运行脚本以返回真实过程。