我有一个带有执行SQL任务的SSIS包。 这是代码
declare @vPersonSourceTgt int, @CntFlag int
set @vPersonSourceTgt = (select count(*) from tbl_ONL_Person)
set @CntFlag = case when @vPersonSourceTgt = ? then 1 else 0 end
select @CntFlag as vTargetCntFlag
我确保参数映射中的输入参数名称为0。 在BIDS中一切正常,但是当我在SQL Agent中部署包时。它失败并出现以下错误。
Description: Executing the query "declare @vPersonSourceTgt int, @CntFlag int set @vPersonSourceTgt = (select count(*) from tbl_ONL_PALSAccountPerson) set @CntFlag = case when @vPersonSourceTgt = ? then 1 else 0 end select @CntFlag as vTargetCntFlag" failed with the following error: "Parameter name is unrecognized.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly. End Error DTExec: The package execution returned DTSER_FAILURE (1).
任何帮助都将受到高度赞赏。 谢谢!
答案 0 :(得分:3)
作为作业运行时程序包失败的最常见原因是权限:在BIDS中,程序包运行时具有您的帐户权限;在计划时,它以SQL代理权限运行。您是否使用Windows身份验证连接到数据库,例如?
另一个常见问题是工作站上的组件未安装在服务器上,例如:第三方OLE DB提供程序。但这似乎不是这种情况,因为错误通常更具体。
有KB article提供有关如何解决和解决作为作业运行的程序包问题的一般建议。