在执行SQL任务中无法识别的变量

时间:2013-03-15 16:02:14

标签: ssis

  1. 我在ssis包中运行了这个sql语句。我已经硬编码了电子邮件地址。我如何将其作为变量传递并外化变量,并可以从配置文件中传递值?

  2. @PackageStartTime是系统启动时间。我已声明该变量并使用@[System::StartTime]在属性窗口中设置表达式并计算该表达式。但是当我运行这个包时,当它遇到这个特定的任务时,就会卡在那里说PackageStartTime参数未被识别,结果属性设置不正确。

  3. 这是我的代码:

    DECLARE @PackageStartTime Varchar(250) 
    SET @PackageStartTime =?
    
    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 msdb.dbo.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
    

    知道如何解决这两件事吗?

    提前致谢。

1 个答案:

答案 0 :(得分:1)

Maina,我刚回复了你关于这个主题的另一篇文章。到目前为止,我遇到了三个帖子。您在此问题中提出的问题非常笼统,答案可以在任何好书中找到(例如Professional Microsoft SQL Server 2008 Integration Services)。您还可以在许多网站上找到完整的逐步答案(但不要将它们用作书籍的替代品;否则您对SSIS的了解可能仍然不完整。

话虽如此,这里有两个链接可以回答你的问题: 1.传递变量:https://www.simple-talk.com/sql/ssis/passing-variables-to-and-from-an-ssis-task/(实际上,似乎我之前也已将此链接发送给您。)

  1. 从配置中分配变量值 - http://www.bidn.com/blogs/DevinKnight/ssis/1655/passing-values-into-an-ssis-package-at-runtime-from-outside-the-package
  2. 首先关注第1项。练习之后,创建一个新的Execute sql任务,并将其中的大量代码放入其中:

    DECLARE @PackageStartTime Varchar(40)=?; SELECT COUNT(*)FROM [dbo]。[Table1] WHERE RowCDate> = @PackageStartTime;

    并将此行计数存储在包变量iCount中。返回值是通过ResultSet属性完成的。如果您能够使此任务有效,则可以提高您对执行SQL任务的熟练程度。