网站首页  |   业界社区  |  电信社区  |  技术社区   |  极客社区  |  游戏社区  |  生活社区   |   科技博客  |   同事录
TechWeb-技术社区


标题: [推荐] 讲解SQL Server定时作业job的设置方法
沙漠之狐
TW金牌会员
Rank: 6Rank: 6



UID 81206
精华 12
积分 1051
帖子 612
阅读权限 70
注册 2006-8-21
状态 离线
发表于 2008-7-28 12:30 资料 短消息 加为好友
讲解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 如果某台机器的作业数量很多,一定要提高它,例如为100000tech.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 也会出错, 可以把它去掉。

引用 回复 顶部
查看积分策略说明快速回复主题
选项 标题 Smilies
禁用 URL 识别
禁用 Smilies
禁用 Discuz!代码
使用匿名发帖
使用个人签名
接收新回复邮件通知
内容





当前时区 GMT+8, 现在时间是 2008-12-3 08:15
京ICP证060517号

本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0 © 2001-2008 Comsenz Inc.
Processed in 0.064853 second(s), 8 queries

清除 Cookies - 联系我们 - TechWeb.com.cn - Archiver - WAP