You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

4. 验证整体流程

做完以上配置后,重新运行包:

  1. SSMS调用dtexec传入的User::Test变量会被正确传递到Execute SQL Task
  2. 生成的XML会包含Type节点的变量值
  3. 你的脚本任务代码是正常的,只要XML_OUT变量正确获取到带参数的XML结果,就能成功写入指定的XML文件

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:48:37