如何将SSMS变量传入SSIS 2008包并生成含变量的XML文件
解决SSIS 2008中Execute SQL Task参数错误及变量写入XML问题
你的报错Parameter names cannot be a mixture of ordinal and named types是因为Execute SQL Task的参数映射配置和SQL查询里的参数用法不匹配,下面是一步步的修复方案:
1. 修正SQL查询写法(简化并避免潜在问题)
你当前的查询先声明@test再赋值参数,可以直接把参数嵌入SELECT语句,减少冗余操作:
SELECT [BATCH_TYPE_ID] AS [MessageID], ? AS [Type], '10189209' AS [Order] FROM mydb FOR XML PATH ('PALLETS'), ROOT('INT_440')
如果坚持保留@test变量,也可以,但要确保后续参数映射完全用位置式参数,不要混合命名参数。
2. 正确配置Execute SQL Task的参数映射
打开Execute SQL Task的编辑窗口,切换到Parameter Mapping标签页,按以下配置:
- 变量名:选择
User::Test(你传入的包变量) - 方向:
Input - 数据类型:
NVARCHAR(和你的变量类型一致) - Parameter Name:
0(注意!SSIS中位置参数从0开始计数,不要用@test这类命名参数,这会触发混合类型错误) - Parameter Size:
50(和你变量定义的长度匹配)
3. 确认ResultSet配置正确
因为你的查询返回单条XML结果,需要把结果赋值给User::XML_OUT变量:
- 在Execute SQL Task的General标签页,把
ResultSet设为Single row - 切换到Result Set标签页,添加一个映射:
- Result Name:
0 - 变量名:
User::XML_OUT
- Result Name:
4. 验证整体流程
做完以上配置后,重新运行包:
- SSMS调用dtexec传入的
User::Test变量会被正确传递到Execute SQL Task - 生成的XML会包含
Type节点的变量值 - 你的脚本任务代码是正常的,只要
XML_OUT变量正确获取到带参数的XML结果,就能成功写入指定的XML文件
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

