SSIS包中的Send db mail任务失败,并出现与参数相关的错误
我试图在SSIS包中执行此sql任务,该包在找不到文件名时发送电子邮件。我已在ssis包中声明了此用户定义变量“@PackageStartTime”。但是,当我的SSIS包执行此任务时,它会失败,并出现以下错误 “执行查询DECLARE@packagestartime Varchar(250)SET@Packag….”失败,错误为::“无法识别参数名。” 可能的失败原因:查询有问题,“ResultSet”属性未正确设置、参数未正确设置或连接未正确建立 我无法理解。我刚刚添加了一个变量User::strPackageStartTime as Datatype=String,且值为空。我在执行SQL任务编辑器的参数映射中没有该变量。是否缺少某些内容SSIS包中的Send db mail任务失败,并出现与参数相关的错误,ssis,resultset,dbmail,Ssis,Resultset,Dbmail,我试图在SSIS包中执行此sql任务,该包在找不到文件名时发送电子邮件。我已在ssis包中声明了此用户定义变量“@PackageStartTime”。但是,当我的SSIS包执行此任务时,它会失败,并出现以下错误 “执行查询DECLARE@packagestartime Varchar(250)SET@Packag….”失败,错误为::“无法识别参数名。” 可能的失败原因:查询有问题,“ResultSet”属性未正确设置、参数未正确设置或连接未正确建立 我无法理解。我刚刚添加了一个变量User::
提前感谢我很确定,您不能将参数从SSIS传递到类似的脚本中,但您可以将其传递到存储过程中。因此,请使用参数将所有这些封装到存储过程中。下面的代码创建了您的存储过程 那你就把它叫做
EXEC p_MyProc ?
在你的包裹里
还要注意,我想你设置了@SUB两次,我把它改成了@BODY
另外请注意,将日期存储为varchar(250)通常不是一个好主意-如果有机会,请立即将其更改为date或datetime。
CREATE PROC p_MyProc
@PackageStartTime Varchar(250)
AS
IF(SELECT COUNT(*)
FROM [dbo].[Table1] WHERE RowCDate >=@PackageStartTime)>0
BEGIN
DECLARE @SUB Varchar(250)
SET @SUB = 'File Failed'+@@SERVERNAME
DECLARE @BODY Varchar(250)
SET @BODY = 'File Failed'+@@SERVERNAME
EXEC sp_send_dbmail @profile_name='default',
@recipients='dev@null.com',
@subject=@SUB,
@body=@BODY,
@query= 'SELECT DISTINCT FileLoadName
FROM [dbo].[Table1] WHERE RowCDate >=@PackageStartTime',
@attach_query_result_as_file=1
GO
要将其移动到SSIS(请注意,我没有访问SSIS的权限,所以我是盲目的)
我知道。这回答了你的问题吗?我不能创建新的存储过程。还有其他解决方案吗?你可以将所有逻辑移到SSIS中,因为我不能在这里创建存储过程。我应该怎么做?很抱歉,我是SSIS新手。请参阅我的其他答案中关于如何在SSIS中创建此逻辑的指南
CREATE PROC p_MyProc
@PackageStartTime Varchar(250)
AS
IF(SELECT COUNT(*)
FROM [dbo].[Table1] WHERE RowCDate >=@PackageStartTime)>0
BEGIN
DECLARE @SUB Varchar(250)
SET @SUB = 'File Failed'+@@SERVERNAME
DECLARE @BODY Varchar(250)
SET @BODY = 'File Failed'+@@SERVERNAME
EXEC sp_send_dbmail @profile_name='default',
@recipients='dev@null.com',
@subject=@SUB,
@body=@BODY,
@query= 'SELECT DISTINCT FileLoadName
FROM [dbo].[Table1] WHERE RowCDate >=@PackageStartTime',
@attach_query_result_as_file=1
GO