我正在构建一个SSIS包来选择一些数据作为XML并将其导出到一个平面文件。我通过for循环运行它,我有一个sql execute任务来选择表中的所有记录,然后遍历每个记录以创建一个XML文件。
这是我试图在OLE DB源代码编辑器中作为数据流的一部分执行的SQL语句。 select位于另一个SELECT(...)AS XML_TEXT中,以使输出成为文本
SELECT
(SELECT SalesCode, ProductName, ManufacturingSite, Country, Language, Status, RevisionDate, ArchiveDate, PFFileName, XMLFileName, Version
FROM ir_cp_connect_data
WHERE (id = ?)
FOR XML RAW ('Data'), ROOT ('Sales'), ELEMENTS XSINIL)
AS XML_TEXT
我试图直接将其作为SQL命令输入,也可以在变量中输入。当我直接将其作为命令输入时,它会错误地说它无法解析查询,出现语法错误,权限违规或其他非特定错误。
当我在数据访问模式下将其切换为变量时,会出现错误,并显示长错误消息
SSIS错误代码DTS_E_OLEDBERROR。发生OLD DB错误,错误代码0x80004005。 OLE DB记录可用。
然后再继续列出语法错误,权限违规或其他非特定错误。'
如果我在SQL Management Studio中运行select语句,它会起作用,尽管我将id = ?
替换为id = @id
并声明@id in并为其赋值。
我正在使用VS2008和SQL Server 2008R2。
我觉得我错过了一些非常明显的东西,但我不能把手指放在上面。如果我删除打开的SELECT(..)AS XML_TEXT,查询解析正常,但输出是System.Byte [],这对平面文件没有好处。
非常感谢任何帮助。