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日 星期三
2010年4月14日 星期三
SSMS 類別未登錄
在WINDOW 7上先安裝SQL SERVER 2008 Standard Edition 64bit, 後來因為OPENQUERY EXCEL 尚不支援64BIT 的EXCEL JET ENGINE,所以在同一台機器,我又安裝32BIT的SQL SERVER 2005
裝完後,二個版本的SQL SERVER使用起來相安無事,直到上週因為SSRS版本的問題,我重新安裝了SQL 2008 SP1後, 在SSMS 2005 下開啟原本就在使用的SOLUTION後,三不五時就出現這個錯
Microsoft SQL Server Management Studio
類別未登錄 (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
Microsoft SQL Server Management Studio
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
很奇怪的是,時好時壞,有時可以順利打開,但有時關機後重開機就又不行了.
GOOGLE了一下, 微軟官方網站有這麼一個KB 961638
建議的解決方法
1. 改用SSMS 2008開啟你的方案吧......是可以...不過OPENQUERY EXCEL時又要回到SSMS 2005.很麻煩
2.重新安裝SQL SERVER 2005....我也很想....但應該也是一個麻煩事吧
2010/10/26 依MS Connect 重裝的指令測試,
Start /wait E:\Software\MicroSoft\SQL2005\StandardENG\DISC1\setup.exe /qb INSTANCENAME=yourserver REINSTALL=ALL REINSTALLMODE=omus SAPWD=yourpwd
裝完2005後, 變成2008R2嗝屁了...
看來MS自家的產品也是有很大的 DLL HELL啊.
裝完後,二個版本的SQL SERVER使用起來相安無事,直到上週因為SSRS版本的問題,我重新安裝了SQL 2008 SP1後, 在SSMS 2005 下開啟原本就在使用的SOLUTION後,三不五時就出現這個錯
Microsoft SQL Server Management Studio
類別未登錄 (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
Microsoft SQL Server Management Studio
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
很奇怪的是,時好時壞,有時可以順利打開,但有時關機後重開機就又不行了.
GOOGLE了一下, 微軟官方網站有這麼一個KB 961638
建議的解決方法
1. 改用SSMS 2008開啟你的方案吧......是可以...不過OPENQUERY EXCEL時又要回到SSMS 2005.很麻煩
2.重新安裝SQL SERVER 2005....我也很想....但應該也是一個麻煩事吧
2010/10/26 依MS Connect 重裝的指令測試,
Start /wait E:\Software\MicroSoft\SQL2005\StandardENG\DISC1\setup.exe /qb INSTANCENAME=yourserver REINSTALL=ALL REINSTALLMODE=omus SAPWD=yourpwd
裝完2005後, 變成2008R2嗝屁了...
看來MS自家的產品也是有很大的 DLL HELL啊.
2010年4月8日 星期四
WINDOWS 7 移除SQL 2008 SP1
這二天在使用SQL Server Reporting Server時,發現SSMS上顯示的版本竟然還停在10.0.1600 明明已經安裝過Service Pack 1了,版本應該是10.00.2531 才對
想要重新安裝Service Pack 1時, 結果說不需任何更新, 同時畫面上顯示著Reporting Server是10.00.2531
怪哉, 明明SSMS上的Report Services的版本是10.00.1600
所以只好先移除再安裝一次看看了
在控制台的程式集選解除安裝程式,進入後在左方選檢視安裝的更新
進入後即可看到機器所安裝的更新程式
選擇SQL Server 2008 Service Pack 1解除安裝即可
解除過程式會要求讀取原sql server 安裝光碟片.
解除完畢,重新開機
後記:
重裝後, SSMS上 Report Server的版本還是10.0.1600? 一頭霧水...
順便記載SQL Server 2008的版本說明 http://www.microsoft.com/sqlserver/2008/en/us/editions.aspx
及適用的作業系統 http://msdn.microsoft.com/en-us/library/ms143506.aspx#EEx64
想要重新安裝Service Pack 1時, 結果說不需任何更新, 同時畫面上顯示著Reporting Server是10.00.2531
怪哉, 明明SSMS上的Report Services的版本是10.00.1600
所以只好先移除再安裝一次看看了
在控制台的程式集選解除安裝程式,進入後在左方選檢視安裝的更新
進入後即可看到機器所安裝的更新程式
選擇SQL Server 2008 Service Pack 1解除安裝即可
解除過程式會要求讀取原sql server 安裝光碟片.
解除完畢,重新開機
後記:
重裝後, SSMS上 Report Server的版本還是10.0.1600? 一頭霧水...
順便記載SQL Server 2008的版本說明 http://www.microsoft.com/sqlserver/2008/en/us/editions.aspx
及適用的作業系統 http://msdn.microsoft.com/en-us/library/ms143506.aspx#EEx64
DOS command 開啟telnet服務
輸入以下指令,啟用telnet服務
sc config tlntSvr start= auto
net start tlntSvr
輸入以下指令, 關閉及停用telnet服務
net stop tlntSvr
sc config tlntSvr start= disabled
sc config tlntSvr start= auto
net start tlntSvr
輸入以下指令, 關閉及停用telnet服務
net stop tlntSvr
sc config tlntSvr start= disabled
2010年4月2日 星期五
轉貼 Left outer join vs NOT EXISTS
大table left outer join 小table, 排除不存在於小table的筆數時,用not exists效能比較好,尤其是當JOIN條件為index column
甚少用到exists , not exists語法, 這篇實測文章給了我一點新想法.
http://www.sqlservercentral.com/blogs/sqlinthewild/archive/2010/3/23/left-outer-join-vs-not-exists.aspx
作者結論:
The LEFT OUTER JOIN … IS NULL method is slower when the columns are indexed and it’s perhaps not as clear what’s happening. It’s reasonably clear what a NOT EXISTS predicate does, with LEFT OUTER JOIN it’s not immediately clear that it’s a check for non-matching rows, especially if there are several where clause predicates.
最近和小朋友一直在OPTIMIZE SQL SERVER 2000, 發現最大的瓶頸在DISK I/O上, 將幾個大TABLE的FILEGROUP上到SAN後,效能改善了至少2/3, 原先的硬碟是一組RAID 5+1,跑了5年後,在不到二個月的時間陸續掛了二顆硬碟 ,DISK QUEUE一直處在00%滿載亮紅燈中...
幾個主要的大table在多人同時間做insert / delete /select 時,整台主機都被卡住了,動也動不了.將大TABLE的FILEGROUP上到SAN後,至少主機不會整個卡住什麼都不能做.
接著開始看使用者自已寫的RDL表, 千奇百怪的語法都有. 很佩服SQL 2000還挺耐操的, 操不死,頂多就是喘了點.
DBA的工作真偉大, 光效能精進就是一件又苦又漫長的等待
給小朋友和自已鼓鼓掌.,
小朋友給他多一點掌聲, 他比較適合搞技術, 遇上業務邏輯的事,總讓我發火..
接下來調整tempdb...
甚少用到exists , not exists語法, 這篇實測文章給了我一點新想法.
http://www.sqlservercentral.com/blogs/sqlinthewild/archive/2010/3/23/left-outer-join-vs-not-exists.aspx
作者結論:
The LEFT OUTER JOIN … IS NULL method is slower when the columns are indexed and it’s perhaps not as clear what’s happening. It’s reasonably clear what a NOT EXISTS predicate does, with LEFT OUTER JOIN it’s not immediately clear that it’s a check for non-matching rows, especially if there are several where clause predicates.
最近和小朋友一直在OPTIMIZE SQL SERVER 2000, 發現最大的瓶頸在DISK I/O上, 將幾個大TABLE的FILEGROUP上到SAN後,效能改善了至少2/3, 原先的硬碟是一組RAID 5+1,跑了5年後,在不到二個月的時間陸續掛了二顆硬碟 ,DISK QUEUE一直處在00%滿載亮紅燈中...
幾個主要的大table在多人同時間做insert / delete /select 時,整台主機都被卡住了,動也動不了.將大TABLE的FILEGROUP上到SAN後,至少主機不會整個卡住什麼都不能做.
接著開始看使用者自已寫的RDL表, 千奇百怪的語法都有. 很佩服SQL 2000還挺耐操的, 操不死,頂多就是喘了點.
DBA的工作真偉大, 光效能精進就是一件又苦又漫長的等待
給小朋友和自已鼓鼓掌.,
小朋友給他多一點掌聲, 他比較適合搞技術, 遇上業務邏輯的事,總讓我發火..
接下來調整tempdb...
2010年4月1日 星期四
DOS command 開啟遠端連線功能
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Terminal Server]
"fDenyTSConnections"=dword:00000000
在DOS 模式下, 將以上機碼利用echo 存成 aa.reg檔
或者用 copy con aa.reg 方式編輯存檔
再 用regedt32 /s .reg
即可開啟, 要關閉則將dword:00000000改為dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Terminal Server]
"fDenyTSConnections"=dword:00000000
在DOS 模式下, 將以上機碼利用echo 存成 aa.reg檔
或者用 copy con aa.reg 方式編輯存檔
再 用regedt32 /s .reg
即可開啟, 要關閉則將dword:00000000改為dword:00000001
2010年3月17日 星期三
route table ?
在人客家做工, 上網處處受限
有了iPhone, 路是人走出來的
想要指定IE上內網做事時要走人客家的路
出去外面花花世界逛逛時要走iPhone 3GS
同事指導教學..
首先, 先將原先內網中,人客家的GATEWAY移掉
接著, 利用ROUTE TABLE 指定哪些IP是要以內網要進出
在DOS COMMAND下, 加這麼一段指令
route add 172.1.0.0 mask 255.255.0.0 172.1.33.254
紅色是以172開頭的IP都走內網
綠色是範圍
藍色是目前所在環境的gateway, 如果有多個就要一一設置
如果不知所在GATEWAY, 先利用tracert去試看看,
例如, tracert http://www.facebook.com/, 然後就會一一將IP顯示出來....
用了幾天, 也不太確定OK不OK,因為時好時壞...
有什麼簡易方法可以讓IE和FIREFOX走不同的連線嗎?
有了iPhone, 路是人走出來的
想要指定IE上內網做事時要走人客家的路
出去外面花花世界逛逛時要走iPhone 3GS
同事指導教學..
首先, 先將原先內網中,人客家的GATEWAY移掉
接著, 利用ROUTE TABLE 指定哪些IP是要以內網要進出
在DOS COMMAND下, 加這麼一段指令
route add 172.1.0.0 mask 255.255.0.0 172.1.33.254
紅色是以172開頭的IP都走內網
綠色是範圍
藍色是目前所在環境的gateway, 如果有多個就要一一設置
如果不知所在GATEWAY, 先利用tracert去試看看,
例如, tracert http://www.facebook.com/, 然後就會一一將IP顯示出來....
用了幾天, 也不太確定OK不OK,因為時好時壞...
有什麼簡易方法可以讓IE和FIREFOX走不同的連線嗎?
訂閱:
文章 (Atom)
VS CODE離線安裝套件方式-續
去年 vscode離線安裝 powershell nupkg 今年在一台無外網的 windwos 2025上安裝時遇到了powershell版本一直讀取到了5.1的版本,鬼打牆了一下午,在VM還原重測測了好幾回,應該是可行了。 將下載到的免安裝powershell 解壓縮到...
-
一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...
-
freeFTPd是套免費的SFTP SERVER支援22 port SFTP及21port FTP,一般找到免費的都不支援SFTP只有技援FTPS。 之前一直有個困擾在幾台主機安裝後,有幾台重開機後,SFTP SERVER必須手動去啟動,一直以來老是搞不懂為什麼,今天看到一篇文...
-
Row.Cells[2].Text == "abc" ? "ok" : "not ok" ; 或加入Microsoft. VisualBasic 參考使用 vb namespace using Microsoft...