Visual studio 使用执行SQL任务在SSIS中执行过程时出现问题

Visual studio 使用执行SQL任务在SSIS中执行过程时出现问题,visual-studio,stored-procedures,ssis,execute-sql-task,Visual Studio,Stored Procedures,Ssis,Execute Sql Task,我使用executesql任务从数据库中写入三个变量值,如果我使用断点检查值是否正确写入,则一切似乎都是正确的。 现在我想使用之前在另一个executesql任务中编写的变量来执行一个过程。问题是变量的值没有正确映射(我认为)。 我认为变量不是全局的(事实上,当我检查变量时,值总是零,而在我编写变量的任务中调试时,值不是零)。 我如何解决这个问题 这就是我所说的过程: exec FillCalendar ?, ?, ?, ? (我有4个变量) 这是参数映射: 它们在查询中按问号的顺序排列。

我使用executesql任务从数据库中写入三个变量值,如果我使用断点检查值是否正确写入,则一切似乎都是正确的。 现在我想使用之前在另一个executesql任务中编写的变量来执行一个过程。问题是变量的值没有正确映射(我认为)。 我认为变量不是全局的(事实上,当我检查变量时,值总是零,而在我编写变量的任务中调试时,值不是零)。 我如何解决这个问题

这就是我所说的过程:

exec FillCalendar ?, ?, ?, ?
(我有4个变量)

这是参数映射:

它们在查询中按问号的顺序排列。
它们都是INT类型。

我以前遇到过一些问题,SSI无法正确识别
执行SQL任务中的输入参数

我的“最佳实践”是现在为所有输入参数声明占位符变量,然后使用占位符。例如,我可能会将您的存储过程调用更改为:

DECLARE @Param1 VARCHAR(100)
DECLARE @Param2 INT
DECLARE @Param3 BIT
DECLARE @Param4 DATE

SET @Param1 = ?
SET @Param2 = ?
SET @Param3 = ?
SET @Param4 = ?

EXEC FillCalendar @ProcInput1 = @Param1, @ProcInput2 = @Param2, @ProcInput3 = @Param3, @ProcInput4 = @Param4
其中,
@ProcInput1、@ProcInput2、@ProcInput3和@ProcInput4
是存储的proc输入参数名称。显然,您应该使用正确的数据类型声明占位符

其他信息

有关从SSIS任务传递变量和将变量传递到SSIS任务的更多信息,请参阅以下链接


我以前遇到过一些问题,SSI无法正确识别
执行SQL任务中的输入参数

我的“最佳实践”是现在为所有输入参数声明占位符变量,然后使用占位符。例如,我可能会将您的存储过程调用更改为:

DECLARE @Param1 VARCHAR(100)
DECLARE @Param2 INT
DECLARE @Param3 BIT
DECLARE @Param4 DATE

SET @Param1 = ?
SET @Param2 = ?
SET @Param3 = ?
SET @Param4 = ?

EXEC FillCalendar @ProcInput1 = @Param1, @ProcInput2 = @Param2, @ProcInput3 = @Param3, @ProcInput4 = @Param4
其中,
@ProcInput1、@ProcInput2、@ProcInput3和@ProcInput4
是存储的proc输入参数名称。显然,您应该使用正确的数据类型声明占位符

其他信息

有关从SSIS任务传递变量和将变量传递到SSIS任务的更多信息,请参阅以下链接


与以前相同的问题。SQL任务继续进行,但过程没有做任何事情。我认为这是变量的问题,因为它们是在以前的SQL任务中编写的,我认为它们丢失了。@CaptainAlex先生我在digital的答案中添加了两个链接,请检查它们,以确定您是否正确读取了变量。我完全按照第二个链接的指南进行了操作。我不明白是什么问题。我通过一个sql任务从数据库中的表中加载值,并通过另一个sql任务执行该过程。我不明白可能是什么错误。和以前一样的问题。SQL任务继续进行,但过程没有做任何事情。我认为这是变量的问题,因为它们是在以前的SQL任务中编写的,我认为它们丢失了。@CaptainAlex先生我在digital的答案中添加了两个链接,请检查它们,以确定您是否正确读取了变量。我完全按照第二个链接的指南进行了操作。我不明白是什么问题。我通过一个sql任务从数据库中的表中加载值,并通过另一个sql任务执行该过程。我不明白可能是什么错误。您的参数映射正确吗?您能在执行SQL任务中共享参数映射窗口的屏幕截图吗?@FaisalMehboob我共享了它。您能告诉我们如何在上游
执行SQL任务中设置这些变量吗?这些业务逻辑是否在一个循环中?是否有任何业务逻辑被划分为循环内部和循环外部?当我在执行该过程的sql任务中放置断点时,它们被正确设置。你想看什么?我从数据库中存储变量的方式,或者sql任务的常规设置(其中包含过程)的方式?您的参数映射是否正确?您能在执行SQL任务中共享参数映射窗口的屏幕截图吗?@FaisalMehboob我共享了它。您能告诉我们如何在上游
执行SQL任务中设置这些变量吗?这些业务逻辑是否在一个循环中?是否有任何业务逻辑被划分为循环内部和循环外部?当我在执行该过程的sql任务中放置断点时,它们被正确设置。你想看什么?我从数据库中存储变量的方式,还是存储过程所在的sql任务的常规设置?