Posted: 2005/1月/07 9:28上午 | IP記錄
|
|
|
使用計劃任務
許多任務需要在某一特定的時間執行。比如,有時候你可能需要每一個小時收到一封有關你的數據表內數據總結信息的電子郵件。或者你 可能需要在每一星期的特定一天清除在數據庫內的舊數據。為了在一個特定的時間執行一個存儲過程,你需要使用計劃任務。
本部分一步步的說明如何創建某一特定任務和計劃該任務,在下面的過程中,你將會學習到如何創建一個任務,該任務會自動的把包含在 你Web服務器log內的數據的總結信息自動地Email給你。
注意
為了使用在該部分內所描述的計劃任務,你需要使用一個郵件服務器,比如Microsoft Exchange Server(參看第四章,」Exchange Active Server,Index Server,和NetShow」)。你同樣需要配置Internet Information Server(IIS)把它的log保存在SQL Server內而不是保存在文本文件內。為了做到該點,你必須在Internet 服務管理器選擇ODBC logging做為當前的log格式(如果你想獲得有關如何配置ODBC logging的信息,請參看Internet服務管理器的在線文檔)。
創建計劃任務的第一個步驟是創建一個你想設定計劃的存儲過程。在本例子中,我們創建一個接收在你的服務器log內不同的IP地址 的數目的存儲過程。該數目可以對你站點的訪問次數做一個粗略的估計。
該存儲過程同樣接收你網站的主頁被訪問的次數,你網站的主頁假定為在你站點的根目錄下面的default.cfml文件。假如你 的主頁是另外一個文件,在下面的存儲過程中,把文件default.cfml替換成你主頁的文件名稱。
該過程同樣假定存儲你web服務器的log的表的名稱為weblog。假如你在配置IIS時使用了另外一個名稱的表,在下面的存 儲過程中做相應的修改。
最後,我們還假定你Email帳號的名稱配置成管理員。你可以使用任何有效的Email地址(比如:someone@somewhere.com)來替換該名稱。你甚至可以把該郵件發送給你的詢呼機,如果你的詢呼服務器支持接受Email的話。
下面就是該存儲過程:
CREATE PROCEDURE get_stats AS
DECLARE @IpCount INT, @HomePageCount INT,
@LogSum VARCHAR(100), @Subj VARCHAR(100)
SELECT @IpCount=COUNT(DISTINCT ClientHost)
FROM weblog WHERE DATEDIFF(hh,LogTime,GETDATE())<1
SELECT @HomePageCount=COUNT(target)
FROM weblog WHERE target=』/default.cfml』
AND DATEDIFF(hh,LogTime,GETDATE())<1
SELECT @LogSum=』Number of visitors:』+CONVERT(VARCHAR(4),@IpCount)
SELECT @LogSum=@LogSum+』… Number of times home
page accessed:』+CONVERT(VARCHAR(4),@HomePageCount)
SELECT @Subj=』Hourly Site Stats』+CONVERT(VARCHAR(20),GETDATE())
EXECUTE master..xp_sendmail
@@recipients=』administrator』,
@@subject=@Subj,
@@massage=@LogSum
RETURN
所有在上面的存儲過程內的語句對你來說一定非常的熟悉。前面的兩個SELECT語句使用聚集函數獲得訪問該網站的不同IP地址的 數目和該網站的主頁被訪問的次數。該信息接收了在一個小時之內的數據,隨後的兩個SELECT語句把所得到的值格式化成可讀的形 式。最後xp_sendmail系統存儲過程把查詢的結果以Email形式發送出去。
你可以使用任何一般的方法來創建該存儲過程,比如ISQL/w或在SQL Enterprise Manager中的管理存儲過程對話框。在繼續下面的過程之前,在ISQL/w中試著執行該存儲過程,如果你的數據庫,電子郵件 ,Internet服務器配置都是正確的話,你就能收到一封Email。
該存儲過程接收在前一個小時內你的Web服務器log的統計數字。假如你定制該過程,使其每個小時自動執行一次,你就能不斷地記 錄所有你網站的活動。
為了計劃該存儲過程,開始SQL Enterprise Manager。選擇你的數據庫,然後在菜單上選擇Server|Scheduled Tasks。這時就會顯示Manage Scheduled Tasks 對話框(見圖12.6)。
點擊新任務按鈕(它看起來像一個具有微弱光芒的時鐘)。這時就會顯示新任務對話框窗口(見圖12.7)。
圖12.6 Scheduled Tasks對話框
圖12.7 新任務對話框
跟隨下面的步驟來填寫在新任務對話框內的信息:
在名稱文本框內,提供一個你的計劃任務的名稱。比如,你可以使用名稱send_stats為該計劃任務命名。
在類型下拉式菜單內,選擇TSQL。這說明你將使用T-SQL語句。
在數據庫下拉菜單內,選擇要存儲你的計劃任務的數據庫。
在命令文本窗口內,輸入語句EXECUTE get_stats來執行你剛剛創建的過程。
在對話框的Schedule部分內,選擇Recurring選項。這將會使你的過程在一定的時間間隔內執行。
在你輸入完所有的上述指定的信息後,點擊Change按鈕。這裡你可以改變你任務的計劃時間表。當你點擊Change按鈕時,這 時就會顯示Task Schedule對話框(見圖12.8)。
圖12.8 Task Schedule對話框
在Task Schedule對話框內,計劃你的任務,使其每小時執行一次。在Occurs部分內,選擇Daily選項。在Daily Frequency部分內,選擇Occurs Every並且指明1Hour(s)。點擊close來關閉Task Schedule對話框。
最後,在Manage Scheduled Tasks對話框內,點擊Add按鈕添加你的計劃任務。此時在對話框內的Task list頁內就會顯示你計劃任務的名稱。你可以在將來的任何時候返回此處來檢查該計劃任務的狀態,觀看該計劃任務最後一次執行的 時間或者看看是否該任務包含錯誤。
你可以使用Manage Scheduled Tasks對話框在你創建一個計劃任務後刪除之。如果你想刪除該計劃任務,只需要點擊Delete Task 按鈕(它看起來像一個有一條對角帶的時鐘)。
你同樣可以使用Manage Scheduled Tasks對話框來觀看你計劃任務的歷史。計劃任務的歷史提供了詳細的關於你計劃任務過去活動的信息。點擊Task History按鈕來觀看該信息。
總結
本章介紹了Microsoft SQL Server幾個非常強有力的特性。你學習了如何使用SQL Server Web 嚮導自動從數據庫表中生成Web頁。你同樣也學習了如何創建存儲過程,觸發器和計劃任務。
到目前為止,你已經學習了如何使用腳本,基本和查詢語言來創建HTML網頁,服務器端腳本和數據庫查詢。在本書的下一部分,你將 進一步深入學習這些知識,學習如何把這些語言集合到Active Server Pages內。這可以使你能夠創建非常先進的網站。
|