SQL 2005後,提供了Database Mail的功能,可以利用SMTP MAIL設定JOB執行狀況的EMAIL通知
在SQL 2000的時代,未曾使用過SQL MAIL, 既然SQL 2005有了這麼方便的SMTP MAIL功能,那就來試看看, 因為主要是想要知道每天排程的JOB到底是成功還是失敗. 不然每次都等人客打電話來通知,實在是太沒面子了.
1.開啟SQL SERVER 2005 的Database Mail,
sp_configure 'show advanced', 1;
sp_configure 'Database Mail XPs', 1;
GO
RECONFIGURE;
GO
2.設定Database Mail, 可以使用SSMS->Management下的Database Mail以精靈的方式設定 MSSQLTip上有完整的說明及畫面 http://www.mssqltips.com/tip.asp?tip=1100, 如果要用SCRIPT新增,可以參考MSDN上的範例,我修改後如下
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'testAccount',
@description = 'Mail account for test e-mail.',
@email_address = 'test@mail.test.com',
@replyto_address = null,
@display_name = 'testMailer',
@mailserver_name = 'mail.test.com' ;
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'testProfile',
@description = 'Profile used for test mail.' ;
-- Add the account to the profile (一個profile可有多個account)
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'testProfile',
@account_name = 'testAccount',
@sequence_number =1 ;
-- Grant access to the profile to the DBMailUsers role
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@principal_name = 'public',
@profile_name = 'testProfile',
@is_default = 1 ;
3.在SQL Server Agent 按右鍵選properties, 進入後在Alert System 下 勾選 Enable mail profile,挑選步驟2所設定的profile name
4.在SQL Server Agent 下,找到Operators目錄,按右鍵New operator, 在Name給這個operator指定一個名稱,在E-mail name 輸要發送的對象E-mail, 如果有多個就用;隔開,例如test1@mail.com.tw;test2@mail.com.tw, 以此類推
當然, 你可在此建立多個不同用途的operator, 以方不同性質的job針對不同管理者進行通知
5.最後是....記得重新啟動SQL Server Agent 服務....大功告成
做個測試....
建一個job, 隨便做一個會出錯的step, 例如讀一個不存在的table, select 1 from xxx
在job的Notification中, 勾選E-mail, 選擇步驟4所建立的Operator, 然後指定When the job fails , 這樣當step 執行有錯誤時,就會啟動送email的機制了.
如果以上通通沒搞錯, 試跑一下job, 就收到錯誤email通知了
JOB RUN: 'test' was run on 2010/4/21 at 下午 10:05:16
DURATION: 0 hours, 0 minutes, 0 seconds
STATUS: Failed
MESSAGES: The job failed. The Job was invoked by User win2003\Administrator. The last step to run was step 1 (test).
缺點是....錯誤訊息太精簡了, 也許就只是通知(notification) .
google了一下, 看看這篇文章, 自已想辦法去讀取sysjobstepslogs的完整錯誤吧
以後再試
2010年4月21日 星期三
訂閱:
張貼留言 (Atom)
自動記錄滑鼠點選操作
為了一個需求,需要人工去點選幾個滑鼠的點選行為,找了幾種工具,覺得GS Auto Clicker最實用,極符合我的需求,尤其是多個固定位置的button點擊,解決了一個很耗時間的工作。 最後設定完預設hotkey F8為啟用鍵,就可以開始自動做工了。再按F8結束工作。 GS Au...
-
上網找了免費的白箱檢測工具,找到了 puma scan 因為支援OWASP TOP 10的檢測,所以這是一個符合客戶需求又能與Visual studio結合的工具(白話說...交差了事矣....) 更重要的是這不用錢....檢測工具都貴森森的,尤其是源碼檢測工具。 ht...
-
建了一個工作排程,定時執行batch檔。 batch中寫了一段xcopy,主要針對有異動較新檔案時才複製。 echo off for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find...
-
改用SQL Server Management Studio 2017有一段時間了。 在執行一段之前寫的SQL要組出一段語法時,里頭包含了使用CHAR(10)當作換行符號的文字,在輸出結果中,使用複製貼上的方式要進行執行時,發現換行符號都失效了。 但如果使用Results...
沒有留言:
張貼留言