我有一个带有数据转换任务的DTS包(数据泵)。我想使用带参数的存储过程的结果来获取数据,但是DTS不会预览结果集,也不能在数据转换任务中定义列。
有没有人让这个工作?
警告:存储过程使用两个临时表(当然还要清理它们)
答案 0 :(得分:3)
输入存储过程参数的一些有效值,使其运行并返回一些数据(甚至没有数据,只需要列)。那么你应该能够进行映射/等等。然后进行断开连接的编辑并更改为实际的参数值(我假设你是从全局变量中获取它们)。
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过程,完成后运行脚本以放回真正的过程。
答案 1 :(得分:0)
您需要将它们实际加载到表中,然后如果必须进行翻译,则可以使用SQL任务将其从该表移动到烫发位置。
但是,我发现如果使用存储过程来获取数据,那么同时将它移动到目的地几乎同样快速和容易!
答案 2 :(得分:0)
不,我只能通过让他们在废料表中保存状态来存储DTS程序。