我正在尝试使用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源吗?
答案 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
我没有测试过这个,但我很确定它会起作用。