沙漠之狐
TW金牌会员

UID 81206
精华
12
积分 1051
帖子 612
阅读权限 70
注册 2006-8-21
状态 离线
|
|
|
讲解SQL Server定时作业job的设置方法
如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,可以用管理->SQL Server代理->作业来实现。 TechWeb-技术社区,E&e2z"P1E*]0N
程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛4w6o2V:X5J7{
◆1、管理->SQL Server代理->作业(按鼠标右键)->新建作业-> TechWeb-技术社区-_)g0@"^,Q8m
*z3F/C1x4N'M2m!c ◆2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号-> TechWeb-技术社区+s$V;S0X m I2o-g6J4t
(e&p7|$b2C9H3{)G![TechWeb-技术社区 分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用户[也可选其它的登录]->
7H:A b9C6M s#pTechWeb-技术社区 M4p4m9K9D(N6S8?5A
描述[填写本次工作详细描述内容]; 1l6J+}"B8m I
8K7k(L-|'Q [ 创建作业分类的步骤: /n!Z:L!D+f.l2R$b)b0|+I8{
'J+T"S ?,s
SQL Server代理->作业->右键选所有任务->添加、修改、删除 ] 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛0v c5G(J-d)y0Z$n'a!v
TechWeb-技术社区%f$P-u8Y5U$@
◆3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型[Transact-SQL(TSQL)脚本]->
.p2b4a5E)N'L.z6|(c
!]*I$a!i"ztech.techweb.com.cn 数据库[要操作的数据库]->命令 %_9A)|;A/o%~%S1p1F
8}$E3E/P;j1x [如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的*.sql文件
0R3z3r7P3~8w;M
+`+E2a2l$y2h+P*]4y)ltech.techweb.com.cn 如果要执行存储过程,填 tech.techweb.com.cn7Z#h,v!{.J
/n8m1Q,I.h8\._"ntech.techweb.com.cn exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN]
4_!k'A'W;p#j,Utech.techweb.com.cn.@5R&D.}$v
->确定 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛)L1\#q8`:J7m2u J
7d5y$@5m0n4C2T(|4W (如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、编辑、删除);
9T0?&L)Y1r7@
"F0P,x%L#j;J3A,m1D ◆4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现->
%f1B.L1b-q ftech.techweb.com.cn5i0E"@5?*v%y%E k }&\8m0g-O
更改[调度时间表]->确定 TechWeb-技术社区1N5X0q%d8d)G6r
2|*G$d7M3@;t4e
(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉); 1G*U:L.]5h(U7j-x1x*C
+Y'W;V8c(U6?1GTechWeb-技术社区 ◆5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows应用程序系统日志] ->确定。 4c:o'W#_#],|,T*i-R
tech.techweb.com.cn!T5W2k.x%y;I!m8U
跟作业执行相关的一些SQL Server知识:
1r%X8]/j$E-G*w
8Q"A0s Q1V SQLSERVERAGENT服务必须正常运行,启动它的NT登录用户要跟启动SQL Server数据库的NT登录用户一致。
8f L3s.Q9L*v3a1@tech.techweb.com.cn
!z(n4H4K9C#]!U!A 点作业右键可以查看作业执行的历史记录情况,也可以立即启动作业和停止作业。 5?5g7V(C'c+o @
程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛3y0L/@4B m
最近在看作业历史记录时,发现有的作业记录的历史记录多,有的作业记录的记录的历史记录少。
/G$C.D0Y4u*M,{/k#^
$g$E6u#U2z*l:V#L.X$X/g程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛 如何能使某些作业按各自的需求,保留一段时间.比如保留一个月的历史记录. tech.techweb.com.cn2R4f3J8n:d-n7d1E
#w3C5` w#o;j0V 看了SQL Server的在线帮助文档,里面介绍说: #}'@0}#d6Z.u!V8T0J
TechWeb-技术社区)@-c(h%w3x0L8@
在管理->SQL Server代理->右键选属性->作业系统->限制作业历史记录日志的大小-> TechWeb-技术社区"v/T*W9O7[&V8\1m
$E#n!o2F1e.a8N8k.g
作业历史记录日志的最大大小(行数) 默认为1000 如果某台机器的作业数量很多,一定要提高它,例如为100000 tech.techweb.com.cn(L*w4Q j0V:m*v)e!m3W*~
-y%t9s*a"q:}:q
每个作业历史记录日志的最大行数 默认为100 如果作业每天执行两次,需要保留一个月的日志,可以设为60。 2W x0I8U3R"a F9@
5_$X1L'K1P4t)c#E5e程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛 它们之间有一个相互制约关系, 我们可以根据自己的需要来改。 &R1q*S*z'}'o;B:A.X!e
程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛+D#m'r/s2U0a5{.y#E
如果SQL Server服务器改过机器名, 管理是旧名称时建立的job的时候可能会遇到
,r0e-g.`2c:s,[9}'i6d)w:q%g8{+z)r
错误14274: 无法添加、更新或删除从MSX服务器上发起的作业(或其步骤或调度) tech.techweb.com.cn,y V$q#E;d,u7M
$p$x4o%g!w2E
看了Microsoft的文档: http://support.microsoft.com/default.aspx?scid=kb;en-us;281642 *o2@,x7X.?5Z,K!S
tech.techweb.com.cn2k%@#z-n1w!}*O
说SQL Server 2000系统里msdb..sysjobs 里originating_server 字段里存的是原来的服务器的名称.
8r/^6m6@.f `6A&E#|,?5P9G(P+A2E6C!w1J
24X7在用的系统肯定不能按上面Microsoft的文档说的那样把名字改回来又改过去。 tech.techweb.com.cn8e:b8H/k0H0|*u0t2[ n
&G8a8K%V)j)o 于是想,msdb..sysjobs 能否update originating_server 字段成现在在用的新服务器名? ;C'I7D.{.n3S-R4g4M5T
:V6J.N!l4y7T8]-ytech.techweb.com.cn use msdb 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛2W/a Y/P;c"V2A:l;a8M
select * from sysjobs
D7u0c0H'o9H F'w)Ltech.techweb.com.cn E(p5g0H0u$q
找到originating_server 字段还是旧服务器的job_id, 然后执行update语句:
:D9O;D!j9S/u8}tech.techweb.com.cn
9Z#M)G8K(H#s2D'M:Ttech.techweb.com.cn update sysjobs set originating_server='new_server_name'
8|2B7C2^ B"s5S*g!a1ltech.techweb.com.cn where job_id='B23BBEBE-A3C1-4874-A4AB-0E2B7CD01E14' tech.techweb.com.cn+A8W8^%b#s
(所影响的行数为 1 行) $`;v;G!v"f*e6}
7\-f1Z4l q
这样就可以添加、更新或删除那些曾经出error 14274 的作业了。 +|&p0m1T*p6U
tech.techweb.com.cn-u%v0s/h&`4z%Y9r0C
如果想把作业由一台机器迁移到另一台机器,可以先保留好创建作业的脚本, 然后在另一台机器上运行。 "B-N(D-r4{8m(J%r*F/I
(E8e"T(Z!P0~;C-t'U8nTechWeb-技术社区 导出所有作业的创建脚本操作步骤: :m#_+F0U.q"[)L$n
$U1n.t;h,B4B&m*|:`"{-G 管理->SQL Server代理->作业(鼠标右键)->所有任务->生成SQL脚本->保存到操作系统下的某个sql文件
%c!l&y"]2b4S/p0A8STechWeb-技术社区1X%T)O2Q)N$N
导出某一个作业的创建脚本操作步骤:
3Z8Z-j+L7I!|/u!t4W4Ltech.techweb.com.cn
0A5|-t5B;b,v&R7b.`6P-P5F 管理->SQL Server代理->作业->选中待转移的作业(鼠标右键)->所有任务->生成SQL脚本->保存到OS下的某个sql文件 tech.techweb.com.cn;r$W'I5g0r2R.J.k'T
tech.techweb.com.cn$r2Q8X1f+X%N'I,B/G
然后在目的服务器上运行刚才保存下来的创建作业的sql脚本。
4B,@&o(V.X q6Dtech.techweb.com.cn+b `&o!Z"X5@
如果建作业的用户或者提醒的用户不存在, 则会出错;
0{+C1s'J$u+E;R'ptech.techweb.com.cn.u$D(R'm%? o.U,z.w4c9s
我们需要在目的服务器上建立相关的WINDOWS用户或者SQL Server数据库登录, 也可以修改创建作业的脚本, 把目的服务器上不存在的用户替换成已经有的用户。
{4k:i#F c4\5^/K$DTechWeb-技术社区
0J.f!d6P3W:g'L+_,m#Y6M)Rtech.techweb.com.cn 如果生成日志的物理文件目录不存在,也应该做相关的修改,例如d:\区转f:\区等。另外,字符串的 @command 命令里有分隔符号 go 也会出错, 可以把它去掉。
|
引用
回复
|
|