SSIS遍歷記錄傳送郵件

liangck發表於2008-10-09
剛剛在technet上看了SSIS在執行 SQL 任務中使用結果集的介紹(原文地址: http://technet.microsoft.com/zh-cn/office/cc280492.aspx).就弄了這個東西出來.迴圈表中所有記錄.併傳送郵件.

注意:由於我傳送郵件使用了msdb..sp_send_dbmail儲存過程傳送Database Mail.所以需要在SQLServer Management Studio上配置資料庫郵件.(配置資料庫郵件過程此處不詳說了.可以參考微軟的網站,或http://hi.baidu.com/itpro/blog/item/06a2db11f1263c15b9127bd2.html)

一.在SQLServer上建立測試資料:


create database MyTest
go

use MyTest
go

create table EMailTest(id int,name nvarchar(20),email varchar(256))

insert into EMailTest values(1,N'小樑','purana@126.com')

insert into EMailTest values(2,N'小輝','myfend@hotmail.com')



  二.開啟SQL Server Business Intelligence Development Studio.新建一個SSIS專案.
  三.在”連線管理器”中新建一個”Ole Db連線”,伺服器上填上你的SQLServer例項名(我這裡是用myfend/myfend,以下說到的連線管理器均為此Ole Db連線管理器).資料庫中選擇剛剛建立的MyTest庫.確定返回.
o_1.jpg
  三.在”控制流”上新增一個”執行SQL任務”元件.並雙擊進入”執行SQL任務編輯器”.在”選項”頁面上.Connection上選擇剛剛建立的連線管理器.SQLSourceType為”直接輸入”,SQLStatement處輸入select * from EMailTest  ,在結果集”ResultSet”中選擇”完整結果集”
o_2.jpg
切換到”結果集”頁面上.新增一個變數,名稱為adResultset,值型別選擇Object,確定返回
o_3.jpg
將結果名稱設定為0.
o_4.jpg
此處已設定完,確定返回.

四.在”控制流”上新增一個”ForEach迴圈容器”,並將剛剛的”執行SQL任務”元件的約束流拖到此”ForEach迴圈容器”上.
  雙擊”ForEach迴圈容器”,進入”Foreach迴圈容器編輯器”,並轉到”集合”頁面上.設定Enumerator為”Foreach ADO列舉器”,ADO物件源變數選擇”使用者::adResultSet”(即剛剛的”執行SQL任務”中返回的結果集的變數名)
o_5.jpg
然後切換到”變數對映”頁面上.新建三個變數,第一個變數名稱為”ID”,值型別為”int32”,索引設定為0,第二個變數名稱為”Name”,值型別為”String”,索引設定為1,第三個變數名稱為”EMail”,值型別為”String”,索引設定為2.如圖
o_6.jpg
此處設定完畢,確定返回.
五.在”Foreach迴圈容器”上新增一個”執行SQL任務”元件,將雙擊進入”執行SQL任務編輯器”.在常規頁面下.設定Connection為”myfend/myfend.Test”連線管理器,SQLSourceType設定為”直接輸入”,SQLStatement處輸入
exec msdb.dbo.sp_send_dbmail
      @profile_name='victoria',
      @recipients=?,
      @subject='這是測試郵件',
      @body='這是測試郵件呀,能收嗎?'
o_7.jpg
注意,這裡的@profile_name為你的資料庫郵件的”配置檔名”
o_8.jpg

轉到”引數對映”頁面下.新增一個引數,變數名稱” 使用者::Email”,方向為”Input”,資料型別為”VARCHAR”,引數名稱為”0”,引數大小為”20”,如圖.
o_9.jpg
此處設定完成.確定返回..

全部設定都完成了.執行看看結果.
執行前
o_10.jpg
執行後:
o_11.jpg

相關文章