如何讓sql自動定時執行某個儲存過程

2021-04-08 13:57:00 字數 2137 閱讀 5312

/*--建立作業

--鄒建 2003.10--*/

/*--呼叫示例

--每月執行的作業

exec p_createjob @jobname='mm',@sql='select * from syscolumns',@freqtype='month'

--每週執行的作業

exec p_createjob @jobname='ww',@sql='select * from syscolumns',@freqtype='week'

--每日執行的作業

exec p_createjob @jobname='a',@sql='select * from syscolumns'

--每日執行的作業,每天隔4小時重複的作業

exec p_createjob @jobname='b',@sql='select * from syscolumns',@fsinterval=4

--*/

if exists (select * from dbo.sysobjects where id = object_id(n'[dbo].[p_createjob]') and objectproperty(id, n'isprocedure') = 1)

drop procedure [dbo].[p_createjob]

gocreate proc p_createjob

@jobname varchar(100),--作業名稱

@sql varchar(8000),--要執行的命令

@dbname sysname='',--預設為當前的資料庫名

@freqtype varchar(6)='day',--時間週期,month 月,week 周,day 日

@fsinterval int=1,--相對於每日的重複次數

@time int=170000--開始執行時間,對於重複執行的作業,將從0點到23:59分

asif isnull(@dbname,'')='' set @dbname=db_name()

--建立作業

exec msdb..sp_add_job @job_name=@jobname

--建立作業步驟

exec msdb..sp_add_jobstep @job_name=@jobname,

@step_name = '資料處理',

@subsystem = 'tsql',

@database_name=@dbname,

@command = @sql,

@retry_attempts = 5, --重試次數

@retry_interval = 5  --重試間隔

--建立排程

declare @ftype int,@fstype int,@ffactor int

select @ftype=case @freqtype when 'day' then 4

when 'week' then 8

when 'month' then 16 end

,@fstype=case @fsinterval when 1 then 0 else 8 end

if @fsinterval<>1 set @time=0

set @ffactor=case @freqtype when 'day' then 0 else 1 end

exec msdb..sp_add_jobschedule @job_name=@jobname, 

@name = '時間安排',

@freq_type=@ftype , --每天,8 每週,16 每月

@freq_interval=1,--重複執行次數

@freq_subday_type=@fstype,--是否重複執行

@freq_subday_interval=@fsinterval, --重複週期

@freq_recurrence_factor=@ffactor,

@active_start_time=@time  --下午17:00:00分執行

-- 新增目標伺服器

exec msdb.dbo.sp_add_jobserver 

@job_name = '資料處理' ,

@server_name = n'(local)' 

go 

讓SQL自動備份並壓縮

可以參看 這裡就講如何讓產生後的備份檔案自動壓縮並刪除原始檔的方法 其實這裡利用的是winrar的命令列來執行壓縮並刪除原始檔的方法的 winrar命令列的壓縮命令是 winrar路徑 a 引數 壓縮後的路徑 需要壓縮的檔案路徑 這是本文需要用到的命令格式 之後我們就要解決如何讓sql來執行這個命令...

如何讓程式自動管理執行緒

private handle m handle 顯然,我們僅有這一個類還不能完成我們所需的工作,我們還要一個負責具體監控的threadtask類,threadtask類中有一個監控執行緒threadtaskfunc 負責監控並刪除執行緒。該類定義如下 class cthreadtask public...

如何讓程式隨開機自動啟動

if 需要開機啟動 得到程式自身的全路徑 dword dwret getmodulefilename null,pfilename,max path 新增一個子key,並設定值 下面的 test 是應用程式名字 不加字尾.exe lret regsetvalueex hkey,test 0,reg ...

如何讓SQL Server 2005自動備份資料庫

sql server 2005中可以使用維護計劃來為資料庫自動備份,減少資料庫管理員的工作負擔,下文就主要為大家介紹一下sql2005資料庫自動備份的具體操作步驟。首先開啟sql server configuration manager,啟用sql server agent 例項名 sql serv...

如何讓textarea自動換行 注意wrap屬性

html的textarea控制元件的自動換行是由wrap控制的。wrap屬性定義了輸入內容大於文字域時顯示的方式,其實我們無法使textarea自動換行很多情況都是自己沒有加了不該加的屬性限制。你可能沒有注意到的它三個屬性 預設值是文字自動換行 當輸入內容超過文字域的右邊界時會自動轉到下一行,而資料...