回答

收藏

如何通过T-SQL在SQL Server 2008中创建计划作业?

技术问答 技术问答 288 人阅读 | 0 人回复 | 2023-09-14

我想创建一个在一段时间后从数据库中删除记录的作业。例如,我在新闻表中有一个字段,Time5 O) N6 o( q) ~( Q
Stamp每个月都有一个SQL查询像计划的作业一样在我的数据库上运行,并删除时间戳为两个月大的新闻。通常,我想删除2个月或更早的新闻,以免我的桌子变成大桌子。我怎样才能做到这一点?) n9 M+ m7 t! j$ d) o2 c1 N
               
2 X. ]9 @/ V4 V& i解决方案:
0 e- @! Z3 {1 ^  b5 r2 M, o" l                2 D) J% C: F8 a" k

4 f' E: M% s* z5 S  L+ t, h# ~+ h4 U# m' n$ T4 t
                您应该在SQL中创建作业,下面是通过SQL代理创建作业的示例T-SQL0 Y" x( q8 f6 c( ?. w* y
USE msdb ;0 T% L! ~" z. W+ H- r0 ]/ _$ V1 Q
GO
% L9 S7 X$ ~7 q' y3 iEXEC dbo.sp_add_job
) O  u$ m* I6 `3 n" l: A# n* O    @job_name = N'Weekly Sales Data Backup' ;
( y4 {) B4 x) X2 Z' `GO2 Z+ D  _* F4 Q4 A+ X; x; a
EXEC sp_add_jobstep* g* m  Y2 h; P; {# w
    @job_name = N'Weekly Sales Data Backup',+ H4 {9 f" B( ^5 x
    @step_name = N'Set database to read only',: J0 |: i8 p- h" A3 j2 s5 }, V7 b! v! s
    @subsystem = N'TSQL',
+ ^. @2 b1 D1 W2 \  u: {3 T    @command = N'ALTER DATABASE SALES SET READ_ONLY',
8 T& L" ]' Y* T, q- L" N8 h    @retry_attempts = 5,
4 c" S/ p( G+ F" e% ^/ {    @retry_interval = 5 ;
* |, i( N+ o1 A! l: T- T7 {GO
7 k( W4 _$ K* t1 W' x+ _$ pEXEC dbo.sp_add_schedule. Y, J$ J% f: R' L$ B4 A
    @schedule_name = N'RunOnce',2 E; l3 D* t" l
    @freq_type = 1,
4 t/ {% `, V8 F% _    @active_start_time = 233000 ;7 \  a3 p( x* _( Z9 c: c
USE msdb ;
9 e$ f' _* d$ |2 C: w. jGO
" u8 j  Q+ a  x! \: z. S1 k" rEXEC sp_attach_schedule' Q6 B* d3 v' P4 T
   @job_name = N'Weekly Sales Data Backup',9 m6 @& O" W  A
   @schedule_name = N'RunOnce';+ i$ `. V3 E' ^0 ~) A$ E: |# d$ b# G$ R5 J
GO
1 I& p$ H+ `' Q3 S1 zEXEC dbo.sp_add_jobserver
# d2 m$ `' i, g) _* p9 _4 G! B; i6 R    @job_name = N'Weekly Sales Data Backup';
' N* a1 v0 g. M, V/ ~6 ?GO
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则