作者:蔣勇 http://idoorsoft.51.net
在數據庫的應用系統中,充分的利用數據庫的后臺服務端的功能可以可以簡化客戶端前臺的工作,更可以降低網絡的負荷,同時使整個系統設計更合理,便于維護移植和升級,后臺計劃任務作業在很多數據庫應用中經常會用到,當然是配合存儲過程使用。
在sql server2000中,可以手動一步一步的在企業管理器中建立后臺計劃任務作業,但這樣既麻煩也不便于發布,因此本文給出使用t-sql腳本創建作業的方法。
需要下面三個sql server2000 msdb系統庫中的存儲過程來完成作業的建立,在此之前請先開啟數據庫實例的sqlserveragent服務,sql server安裝后默認是沒有啟動該服務的。
順便說一句,sql server在2000版本中才有了明顯的“實例”的概念,在7.0版中沒有明確的實例,因此在sql server2000默認安裝時創建了一個默認實例,這是為了和sql server 7.0兼容,如果你是默認方式創建的實例,則實例名為空。啥子?你不曉得啥子是“實例”?個人去找點資料看看,oracel、sybase都有實例和表空間,所以我叫sql server2000之前的sql server為桌面數據庫。
進入正題,步驟是“作業”-〉“作業調度”-〉“作業步驟”,具體如下:
1、使用sp_add_job 添加由 sqlserveragent 服務執行的新作業。
2、使用sp_add_jobschedule創建作業調度。
3、使用sp_add_jobstep將一個步驟(操作)添加到作業中
下面以在汽車客運站票務系統中的腳本為例給出實際例子,在看例子之前,請先看一下上面三個系統存儲過程的幫助。在例子中使用了一個自定義的存儲過程“tksp_bakdata”,它的功能是處理當日之前售票數據(只需知道是一個自定義存儲過程就行了)。
例子1:每日0點30分處理售票數據
www.knowsky.com
use msdb
exec sp_add_job @job_name = 'tk_bakdata',
@enabled = 1,
@description = '每日00:30處理售票數據',
@start_step_id = 1,
@owner_login_name = 'tkuser'
exec sp_add_jobserver @job_name = 'tk_bakdata'
go
exec sp_add_jobschedule @job_name = 'tk_bakdata',
@name = 'bakdata003000',
@freq_type = 4,
@freq_interval = 1,
@active_start_time = 003000
go
exec sp_add_jobstep @job_name = 'tk_bakdata',
@step_name = 'bakdata',
@subsystem = 'tsql',
@command = 'exec tksp_bakdata ',
@database_name='ticket'
go
例子2:每日sqlserver啟動時處理售票數據,這樣在每天需要關機的服務器中也能保證處理售票數據。
use msdb
exec sp_add_job @job_name = 'tk_bakdata2',
@enabled = 1,
@description = '每日sqlserver啟動時處理售票數據',
@start_step_id = 1,
@owner_login_name = 'tkuser'
exec sp_add_jobserver @job_name = 'tk_bakdata2'
go
exec sp_add_jobschedule @job_name = 'tk_bakdata2',
@name = 'bakdatastart',
@freq_type = 64
go
exec sp_add_jobstep @job_name = 'tk_bakdata2',
@step_name = 'bakdatastart',
@subsystem = 'tsql',
@command = 'exec tksp_bakdata ',
@database_name='ticket'
go
----蔣勇 2004.8.25
http://idoorsoft.51.net
新聞熱點
疑難解答