SSIS 执行 SQL 任务有效但在执行报告中显示错误消息
SSIS Execute SQL Task works but displays error message in execution report
My Execute SQL Task 执行一个存储过程。如果它获得一些记录,则继续执行创建报告的任务。否则,它将转到脚本任务以发送电子邮件。结果集设置为 "Single row".
一切正常。但是,当存储过程没有 return 任何行时,它仍会发送一封电子邮件,但会在 SQL 执行报告中创建一条失败消息。错误消息指出:
An error occurred while assigning a value to variable "Variable": "Single Row result set is specified, but no rows were returned."
我无法修改我的存储过程。 "fix" 这个错误我有什么选择。 (我的包按预期运行。)
您必须向 Execute SQL Task
添加一些验证以避免空结果集
- 将结果插入 Temp Table
- 检查临时 Table 是否包含行
如果不是Select一个不重要的行
CREATE #TempTable (Column0 Varchar(50), Column1 varchar(50), ....)
INSERT INTO #TempTable
EXEC Proc
DECLARE @intCount INT
SELECT @intCount = COUNT(*) FROM #TempTable
IF @intCount > 0
SELECT TOP 1 * FROM #TempTable
ELSE
SELECT 0
在发送邮件任务中添加表达式 (If Not Empty Row --> Send Mail
)
My Execute SQL Task 执行一个存储过程。如果它获得一些记录,则继续执行创建报告的任务。否则,它将转到脚本任务以发送电子邮件。结果集设置为 "Single row".
一切正常。但是,当存储过程没有 return 任何行时,它仍会发送一封电子邮件,但会在 SQL 执行报告中创建一条失败消息。错误消息指出:
An error occurred while assigning a value to variable "Variable": "Single Row result set is specified, but no rows were returned."
我无法修改我的存储过程。 "fix" 这个错误我有什么选择。 (我的包按预期运行。)
您必须向 Execute SQL Task
添加一些验证以避免空结果集
- 将结果插入 Temp Table
- 检查临时 Table 是否包含行
如果不是Select一个不重要的行
CREATE #TempTable (Column0 Varchar(50), Column1 varchar(50), ....) INSERT INTO #TempTable EXEC Proc DECLARE @intCount INT SELECT @intCount = COUNT(*) FROM #TempTable IF @intCount > 0 SELECT TOP 1 * FROM #TempTable ELSE SELECT 0
在发送邮件任务中添加表达式 (
If Not Empty Row --> Send Mail
)