忙了一段,終于有時間來完成這一系列了。sql server 2008正式版已經釋出了,接下來的系列都将基于sql server 2008+vs.net 2008開發。
引言
在一個B2B項目中遇到這樣的一個情況,每天老闆都想看到所有的新的訂單資訊,而這個老闆很懶,不想登入系統背景,而是想通過檢視郵件的方式。當然實作方式很多,這裡我們介紹一個怎麼使用SSIS包來實作這樣的一個功能。使用SQL XML Query查詢出XML結果資料,然後使用Xsl模闆将xml資料轉換成html,再将html内容發送郵件。
建立SSIS包
1.和vs.net 20005中一樣的方式,建立一個Integration Service項目,并且包的名稱修改為SendMailPackage
2.在你的本地硬碟上建立一個目錄,比如F:\SSIS_Example\SendMail 用來存放查詢語句和Xsl檔案.
3.在剛才的目錄下建立一個QueryOrder.sql檔案,填充如下内容,在連接配接管理器中建立一個檔案連接配接,選擇建立的sql檔案:
隐藏行号 複制代碼 ? QueryOrder.sql
注: 在這裡我們使用一個固定的日期,實際中你可以使用系統方法GETDATE()或者DATEDIFF()來查詢你需要的日期。
4.同樣在目錄下面建立一個Orders.xsl檔案,由于内容較多,請直接下載下傳附件中檔案,這裡也不在詳細介紹xsl的具體内容。 同樣也建立一個檔案連接配接。
5.在目錄下建立一個Orders.htm檔案,用來存放生成的html内容,同時也建立一個檔案連接配接。
6.建立一個Ado.net 連接配接你的AdventureWorks資料庫。現在你的連接配接管理器有如下連接配接:
<a href="http://images.cnblogs.com/cnblogs_com/lonely7345/WindowsLiveWriter/SQLServerBIStepbyStepSSIS5Email_14509/screenshot_2.jpg"></a>
7.建立如下幾個變量,作用域為目前包SendMailPackage.
名稱
資料類型
值
varSalesSummaryXML
String
varSalesSummaryHTML
varMailTo
你的接收Email位址
8.在你的控制流中添加一個執行SQL任務,并設定sql類型為檔案的方式,并選擇我們的檔案連接配接:
<a href="http://images.cnblogs.com/cnblogs_com/lonely7345/WindowsLiveWriter/SQLServerBIStepbyStepSSIS5Email_14509/screenshot_4.jpg"></a>
9.切換到結果集,點選添加,結果果名稱為0,變量選擇varSalesSummaryXML
<a href="http://images.cnblogs.com/cnblogs_com/lonely7345/WindowsLiveWriter/SQLServerBIStepbyStepSSIS5Email_14509/screenshot_6.jpg"></a>
10.在控制流中添加一個XML任務,将剛才的SQL任務的綠箭頭指向XML任務,設定屬性如下:
為了測試結果,上面我們将輸入結果設定為儲存檔案的方式,先執行一下包,測試一下采用xml+xslt的方式生成的html的内容是否正确:
注意,現在我們再把輸出結果改為變量的方式,設定DestinationType屬性為變量的方式,并選擇varSalesSummaryHTML
11. 在XML任務下面添加一個腳本任務來執行發送郵件,之是以不直接采用SSIS的發送郵件任務,是因為發送郵件任務目前不支援html内容.進行腳本任務的屬性設定:
可以看到,腳本任務的設定相對于2005的版本發生比較大的變化,腳本語言終于開始支援了C#,原來的PreCompileScriptIntoBinaryCode屬性不存在了,所有的腳本都要進行預編譯,另外ReadOnlyVariables和ReadWriteVariables變量的設定都可以通過後面的選擇對話框直接選擇。這些改進友善了許多,設定完成後,我們點選編譯腳本就可以起用用我們熟悉的C#來完成發送郵件的操作了.
注意我們需要引入System.Net.Mail,然後通過SmtpClient來通過指定的郵件伺服器發送郵件,可以指定郵件帳号和密碼,而SSIS的發送郵件任務是不支援非windows論證的。
12. 到現在為止已經完成了功能,直接執行包,就可以直接收到訂單清單了,但是要想讓這個包定期的執行,需要部署這個SSIS包,然後在資料庫job中定義執行此包.右擊目前的項目,設定CreateDeploymentUtility屬性為True,這樣能夠自動生成部署檔案.
<a href="http://images.cnblogs.com/cnblogs_com/lonely7345/WindowsLiveWriter/SQLServerBIStepbyStepSSIS5Email_14509/screenshot_18.jpg"></a>
重新編譯此項目,在bin目錄下面Deployment檔案夾,輕按兩下下面的字尾名為SSISDeploymentManifest檔案,啟動包安裝向導,在這裡我們不詳細介紹,直接下一步,直到完成.
13. 打開你的SSMS,确認已經啟動Sql Server代理,建立作業,步驟裡面設定執行我們剛才的SSIS包,再把計劃設定為你想要的時間即可,這裡就不再詳細介紹。
參考
項目下載下傳
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。
本文轉自孤獨俠客部落格園部落格,原文連結:http://www.cnblogs.com/lonely7345/archive/2009/09/03/1559579.html,如需轉載請自行聯系原作者