如何使收件人地址动态,所以我可以避免在SSIS包中进行更改?
我在发送数据库电子邮件的SSIS包中有SQL任务。如何使收件人地址动态,所以我可以避免在SSIS包中进行更改?
EXEC sp_send_dbmail @profile_name='default',
@recipients='[email protected]',
@[email protected],
@[email protected],
@query= 'SELECT DISTINCT FileLoadName
FROM [dbo].[Table1] WHERE RowCDate >[email protected]',
@attach_query_result_as_file=1
但@recipients的价值是硬编码在这里。所以我有一个快速的想法。每次收件人姓名更改时,我都必须转到SSIS包并在其中应用更改。有没有其他的方式来做到这一点,比如将其作为变量并将其放入配置文件中;所以如果数值随着时间的推移而改变,那么有人可以继续前进并在配置文件中进行更改
在此先感谢。
将它作为参数传递。一个这样的例子:https://www.simple-talk.com/sql/ssis/passing-variables-to-and-from-an-ssis-task/
注意:我喜欢在代码的开头接收传递的变量。这样,即使我的代码结构发生变化,传递的参数序列也不需要改变。
我还没有触及您为查询设置的值,因为我不明白为什么您的参数@PackageStartTime在引号内。您可以将附加标志作为参数传递给它。
一旦查询已被参数化,相应的变量就可以放入配置中。
DECLARE
@p_profile_name AS VARCHAR(100) = ?,
@p_receipients AS VARCHAR(MAX) = ?,
@p_subject as VARCHAR(100) = ?,
@p_body AS VARCHAR(MAX) = ?;
EXEC sp_send_dbmail @profile_name= ?, --'default',
@recipients= ?, --'[email protected]',
@subject= ? -- @SUB,
@body= ? -- @BODY,
@query= 'SELECT DISTINCT FileLoadName
FROM [dbo].[Table1] WHERE RowCDate >[email protected]',
@attach_query_result_as_file=1
,请告诉我们(SSIS同胞开发商的充满活力的团队)知道它是否工作。
你也可以从这样的表中获得收件人列表。假设你有一个名为EmployeeList的表,它有一个EmailAddress字段。
DECLARE @emails VARCHAR(500)
SET @emails = ''
SELECT @emails = @emails + EmailAddress + ';' FROM EmployeeList
DECLARE @recipList VARCHAR(500)
SET @recipList = (select SUBSTRING(@emails, 0, LEN(@emails)))
然后你可以设置你的收件人列表这样
EXEC sp_send_dbmail @profile_name='default',
@recipients= @recipList,
@[email protected],
etc....
皮埃尔,我看了有关问题/ 15351282页面上给出你的代码。
一般性意见:考虑组件和您要分配给他们多少责任。这是编写干净,可管理,高效代码的一个非常重要的概念/实践。
现在一些细节:在代码内部,您正在执行if语句,然后决定是否应该发送电子邮件。将它分为两部分。在控制表面有第一个Execute sql任务。将结果存储在一个变量中。测试这一块,并确保正确的行数存储在你的包变量中。对不起,如果我太精细了。
使用条件任务来决定是否应执行此sendEmail任务。
先使用一个简单的查询;删除@attach_query_result_as_file参数。
- 在此任务中添加另一个变量:DECLARE @p_PackageStartTime as varchar(40); @query ='SELECT DISTINCT FileLoadName FROM [dbo]。[Table1] WHERE RowCDate> ='+ @PackageStartTime
- 确保您按照正确的顺序传递参数。 如果仍然失败,请添加参数映射的屏幕截图。
感谢您的回复Anoop http://stackoverflow.com/questions/15351282/send-db-mail-task-fails-in-ssis-package-with-errors-related-to-the-parameter – ETLUser 2013-03-15 13:52:39
灿我请回答这个问题? – ETLUser 2013-03-15 13:53:20