2010-09-01 28 views
0

我有一个名为Table1的表,列col1和col2与col1有关于报告的链接和col2报告的名称。现在,我有一个包含变量var1和var2的包,它应该分别从table1中获取col1和col2值并通过电子邮件发送。如果网络链接在表格中得到更新,包装应发送更新的链接。我知道它的相反方式,但试图做这样的事情。如何从表中将记录(这是一个网页链接)发送到SSIS包中变量的值并通过电子邮件发送该链接?

感谢你们的帮助。

谢谢

回答

0

有几种方法可以做到这一点。根据您处理的是一行还是多行,您可以尝试以下其中一种方法。

单行方案
如果您正在运行SSIS包,使其处理一个,并从表中只有一行,您可以使用执行SQL任务从您的表中获取的值。开始添加两个变量

在任务中,指定到SQL Server的连接并输入一个像这样的SQL语句。

SELECT col1, col2 
FROM Table1 
WHERE <your condition to retrieve one row> 

此外,在常规选项卡上将ResultSet值设置为单行。

在结果集选项卡上添加两个元素。第一行应该是结果名称0,Var1的变量名称。第二行将是结果名称1,变量名称Var2。

当任务运行时,SQL语句的结果将被存储到变量中。

多行方案
如果SSIS包必须返回多行,那么你需要一个不同的方法。首先,您需要创建另一个Object数据类型的变量。 SQL结果将被保存到这个变量中。

您将有一个类似于上面的执行SQL任务。但是,您的SQL语句应该返回所有要处理的行。 ResultSet属性应设置为完整结果集。在结果集选项卡上,应该有一个结果集,其中0作为结果名称,新对象变量作为变量名称。关闭执行SQL任务编辑器。

添加一个Foreach循环容器。编辑容器并选择“收集”选项卡。将Enumerator属性设置为Foreach ADO Enumerator。在枚举器配置下,将您的对象变量设置为ADO对象源变量。

在变量映射选项卡上,添加到行。第一行将具有变量Var1和索引0,第二行将具有变量Var2和索引1. Foreach循环容器将处理结果集中的每个数据并将列值分配给您的变量。您可以在容器中添加任何任务,并且它们将为结果集中的每一行运行一次。

+0

非常感谢。这就是答案应该如何。谢谢。只有一个问题,我如何看到变量的值,我没有看到变量窗口中的值? – User7354632781 2010-09-01 19:15:25

+0

您可以通过设置断点在运行时查看变量值。例如,如果您想要在Foreach循环容器的每次迭代中查看值,则可以在容器上设置断点。右键单击容器并选择编辑断点。在这种情况下,选中Enabled框以查看相应的事件,“在循环的每次迭代开始时中断”。启动软件包,当发生中断时,查看Locals窗口中的变量以查看当前值。点击开始按钮继续处理。 – bobs 2010-09-01 20:24:02

+0

谢谢鲍勃。非常感谢您的帮助和您在SQL方面的专业知识。太感谢了。 – User7354632781 2010-09-01 20:32:24

相关问题