SSIS

时间:2017-07-11 16:32:29

标签: sql-server sql-server-2008 ssis

我正在尝试使用SSIS执行以下操作。我正在使用SDT最新版本并查询SQL Server 2008 R2。

有人可能会建议我做错了吗?如果有更好的方法可以做到这一点

我基本上需要从源代码执行存储过程并将结果存储在目标中。大约有20个存储过程。

每个存储过程都将XML作为输入。我在数据流任务中创建了一个Control任务。在数据流中,我正在创建oledb源。

我选择了数据访问模式作为SQL命令。我在下面创建了我的查询但是当我预览时,我收到错误,说不支持声明语句

DECLARE @xmldata XML

SET @xmldata = (SELECT DISTINCT TOP 1000 (mc.companyId) AS id
                FROM ciqMarketCap mc 
                JOIN ciqCompany c ON c.companyid = mc.companyid
                WHERE c.companyStatusTypeId NOT IN (5, 6) 
                  AND c.companyTypeId IN (1, 4) 
                FOR XML PATH(''), TYPE, ROOT('partyIds'))

EXEC getPartiesMarketData @xmldata

如何执行其余的存储过程?我需要创建几个oledb源吗?

1 个答案:

答案 0 :(得分:0)

我建议分步进行:

在SSIS中创建变量:

xmldata string set =“”

SQLquery字符串集公式“Exec getPartiesMarketData”+ @xmldata

在执行sql任务时,将sql语句输入Direct Input:

SELECT DISTINCT top 1000(mc.companyId)作为id 来自ciqMarketCap mc 加入ciq公司c        ON c.companyid = mc.companyid WHERE c.companyStatusTypeId NOT IN(5,6)AND c.companyTypeId IN(1,4)for xml path(''),type,root('partyIds')

将结果集更改为XML

地图结果xmldata

然后在另一个连接的执行sql中,你将进行真正的查询:

SQL源类型:变量

源变量:SQLquery

我没有测试过这个,但我很确定它会起作用。