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

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

这是我的代码:

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

知道如何解决这两个问题吗?

提前致谢。

4

1 回答 1

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

首先关注第 1 项。练习之后,创建一个新的 Execute sql 任务并将他的大量代码放入其中:

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

并将此行数存储在包变量 iCount 中。返回值是通过 ResultSet 属性完成的。如果您能够完成此任务,那么您已经提高了执行 SQL 任务的熟练程度。

于 2013-03-16T12:15:07.180 回答