Sql server SSIS的SQL命令中不支持Declare语句
我正在尝试使用SSIS执行以下操作。我正在使用SDT最新版本并查询SQL Server 2008 R2 有没有人能建议我是否做错了,是否有更好的方法 我基本上需要从源代码执行一个存储过程,并将结果存储在目标代码中。大约有20个存储过程 每个存储过程都将XML作为输入。我已经在其中创建了一个控制任务,它是一个数据流任务。在数据流中,我正在创建oledb源 我已选择数据访问模式作为SQL命令。我在下面创建了我的查询,但当我预览时,我得到一个错误,说declare语句不受支持Sql server SSIS的SQL命令中不支持Declare语句,sql-server,sql-server-2008,ssis,Sql Server,Sql Server 2008,Ssis,我正在尝试使用SSIS执行以下操作。我正在使用SDT最新版本并查询SQL Server 2008 R2 有没有人能建议我是否做错了,是否有更好的方法 我基本上需要从源代码执行一个存储过程,并将结果存储在目标代码中。大约有20个存储过程 每个存储过程都将XML作为输入。我已经在其中创建了一个控制任务,它是一个数据流任务。在数据流中,我正在创建oledb源 我已选择数据访问模式作为SQL命令。我在下面创建了我的查询,但当我预览时,我得到一个错误,说declare语句不受支持 DECLARE @xml
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源?我建议分步骤执行: 在SSI中创建变量: xmldata字符串集=“” “Exec getPartiesMarketData”+@xmldata的SQLquery字符串集公式 在执行sql任务中,在直接输入中输入sql语句: 选择不同的top 1000(mc.companyId)作为id 来自ciqMarketCap mc 加入ciqcompanyc 关于c.companyid=mc.companyid 其中,对于xml路径(“”),c.companyStatusTypeId不在(5,6)中,c.companyTypeId不在(1,4)中,类型为root('partyIds') 将结果集更改为XML 映射结果xmldata 然后,在另一个“执行sql连接”中,您将执行真正的查询: SQL源类型:变量 源变量:SQLquery
我还没有对此进行测试,但我很确定它会起作用。为什么不创建一个满足您需要的包装器SP,并从SSI调用它?您的意思是我在包装器中执行20个StoredProc,但我如何将20个结果集定向到destinationI I is new SSI中的20个表。如果你能给我举个例子,我会很有帮助的。另外请注意,xml的逻辑对于所有SPSS都是相同的,使用数据流任务、oledb源、连接管理器如何。如何配置这些sp的实际功能是什么?如果它是一个游标,您可以在SSIS中执行foreach循环并跳过XML。StoredProcess包含将根据提供的XML输入检索记录的联接。不使用游标如何创建上面的XML作为视图,而只是在存储过程中引用视图?因此,我从您的建议中了解到,创建视图将包含生成XML的查询。创建几个sql任务,这些任务将执行存储过程并引用视图。我说得对吗。我应该在连接管理器中设置什么查询