SQL Server如何定时作业(执行某个存储过程)
- 格式:doc
- 大小:18.50 KB
- 文档页数:2
Sqlserver数据库定时任务,数据库作业,数据库定时任务当需要周期性的去执⾏⼀个⽅法时,我们可以先写好⽅法,然后交给数据库去完成就可以的。
步骤:⾸先打开SQL数据库中SQLServer代理--》右键作业--》新建作业:
如果SQL Server代理被禁⽤了,那就邮件启动代理即可;
或者这样:
选择计算机——>设备管理——>服务与应⽤程序——>服务——>SQL server 代理
然后把SQL server 代理启动,并设置成⾃动(如果只是测试可直接在数据库启动)
⼀切准备就绪:
1.在常规⾯板中配置参数
2.新建步骤
3.指定计划⽅法
4.新建计划
5.设置执⾏计划时间
6.下⾯是执⾏的计划⽅法,因为我新建作业时接近4点,所以定时计划设置的是每天四点整,便于测试吧, 16点后查询发现成功了。
总结⼀下⼦:步骤三中数据库⼀定不能是默认的否则定时计划失败,原因是找不到计划⽅法。
SQLserver使⽤作业定时执⾏脚本具体步骤:企业管理器--管理--SQL Server代理--右键作业--新建作业--"常规"项中输⼊作业名称--"步骤"项--新建--"步骤名"中输⼊步骤名--"类型"中选择"Transact-SQL 脚本(TSQL)"--"数据库"选择执⾏命令的数据库--"命令"中输⼊要执⾏的语句:下⾯是备份数据库,并且删除15天以前备份的版本DECLARE @strPath NVARCHAR(200)DECLARE @strPathDel NVARCHAR(200)set @strPath =convert(NVARCHAR(19),getdate(),112)set @strPathDel =convert(NVARCHAR(19),getdate()-15,112)set @strPath ='D:\备份\服务器⾃动备份\'+'JSOA2010'+@strPath +'.bak'set @strPathDel ='del '+'D:\备份\服务器⾃动备份\'+'JSOA2010'+@strPathDel +'.bak'BACKUP DATABASE [JSOA2010] TO DISK= @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMATexec master..xp_cmdshell @strPathDel--确定--"计划"项--新建计划--"名称"中输⼊计划名称--"计划类型"中选择你的作业执⾏安排--定为每天计划⼀次,时间为18:40即可--如果选择"反复出现"--点"更改"来设置你的时间安排然后将SQL Agent服务启动,并设置为⾃动启动,否则你的作业不会被执⾏设置⽅法:我的电脑--控制⾯板--管理⼯具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"⾃动启动"--确定.如果报“SQL Server 阻⽌了对组件'xp_cmdshell'的过程'sys.xp_cmdshell'的访问-12-30 13:35”错误解决⽅法:执⾏下⾯的语句-- To allow advanced options to be changed.EXEC sp_configure'show advanced options', 1GO-- To update the currently configured value for advanced options.RECONFIGUREGO-- To enable the feature.EXEC sp_configure'xp_cmdshell', 1GO-- To update the currently configured value for this feature. RECONFIGUREGO。
SQLServer定时执⾏SQL语句⾸先:定时作业的制定企业管理器--管理--SQL Server代理--右键作业--新建作业--"常规"项中输⼊作业名称--"步骤"项--新建--"步骤名"中输⼊步骤名--"类型"中选择"Transact-SQL 脚本(TSQL)"--"数据库"选择执⾏命令的数据库--"命令"中输⼊要执⾏的语句:EXEC 存储过程名 ... --该存储过程⽤于创建表--确定--"调度"项--新建调度--"名称"中输⼊调度名称--"调度类型"中选择你的作业执⾏安排--如果选择"反复出现"--点"更改"来设置你的时间安排然后将SQL Agent服务启动,并设置为⾃动启动,否则你的作业不会被执⾏设置⽅法:我的电脑--控制⾯板--管理⼯具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"⾃动启动"--确定.注意的是:1.在新建作业的属性中的分类选择“数据库维护”2.在调度中对于选择每天执⾏时,要选择每天执⾏的具体时间点,确保在指定的时间执⾏步骤的sql命令。
SQL Server定时执⾏SQL语句存储过程set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoALTER PROCEDURE [dbo].[autoModify]asdeclare @Id intdeclare @Order_status intdeclare @FHTime datetimedeclare @Add_date datetimedeclare pcurr cursor forselect Id,Order_status,dateadd(day,10,FHTime) as FHTime,dateadd(day,14,Add_date) as Add_date from dbo.OrderInfo where Order_status=1 or Order_status=3 open pcurrfetch next from pcurr into @Id,@Order_status,@FHTime,@Add_datewhile (@@fetch_status = 0)beginif(@Order_status=3)beginif(@FHTime<getdate())begin--print 'a'update dbo.OrderInfo set Order_status=4 where [Id]=@Idendendelse if(@Order_status=1)beginif(@Add_date<getdate())begin--print 'b'update dbo.OrderInfo set Order_status=0 where [Id]=@Idendendfetch next from pcurr into @Id,@Order_status,@FHTime,@Add_dateendclose pcurrdeallocate pcurrexec [autoModify]。
SQL Server如何定时作业(执行某个存储过程)
1、SQL Server代理—>作业(按鼠标右键)—>新建作业
2、新建作业属性(常规)—>名称[自定义] -->所有者[默认]—>类别[默认]—>已启用[勾
选]—>设置步骤
3、新建步骤
4、新建-→步骤名[自定义]-→类型[Transact-SQL(TSQL)脚本]—>数据库[要操作的数据库]--> 命令
[ 如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的*.sql文件
如果要执行存储过程,填
exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN]
]--> 确定
5、新建计划
6、新建计划—>名称[自定义]-->计划类型—>设置频率[每天]—>每天频率—>确定
志]-->确定
全部设置完成后确定保存即可。
计算存储过程执行时间的方法
计算存储过程执行时间的方法有几种,下面介绍几种常用的方法:
1.使用SQL Server Profiler工具:可以使用SQL Server Profiler跟踪存储过程
的执行,并在跟踪期间记录每个事件的时间戳。
通过比较时间戳,可以计算存储过程的执行时间。
2.使用SQL Server Management Studio (SSMS):在SSMS中执行存储过程,并
在执行之前和之后记录当前时间戳。
通过比较两个时间戳,可以计算存储过程的执行时间。
3.在存储过程中使用SQL Server内置函数:在存储过程中使用GETDATE()函
数获取当前时间戳,并在执行过程中记录时间戳。
在存储过程执行结束后,再次记录时间戳,并计算执行时间。
无论使用哪种方法,建议多次执行存储过程并取平均值,以获得更准确的结果。
最近工作中需要写SQLserver的存储过程,第一次使用,简单记录下,以防遗忘。
首先点击你的数据库,找到可编程性,在可编程性里面右击存储过程-->点击新建存储过程然后开始写你的存储过程SQL--写法(无参):USE [Test] --[Test]使用的数据来源(数据库名)GO/****** Object: StoredProcedure [dbo].[PR_ShowData] Script Date: 2022/11/12 13:58:38 ******/ --[dbo].[PR_ShowData]新建存储过程,[dbo].[PR_ShowData]是存储过程名SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[PR_ShowData] --修改存储过程,[dbo].[PR_ShowData]是存储过程名ASBEGINdeclare @FLAG VARCHAR(50) --如果需要变量的话,则是用此方法定义变量,类型根据需要自定义--将D表中条件为P01=0的P02值查出来赋值给变量@FLAGSELECT @FLAG=P02 from D where P01 = '0'--判断变量值,执行判断条件里面的SQL语句,这里if里面必须要写开头的begin与结束的endif (@FLAG=0) --如果变量值为0,就删除A,B,C三个表里的数据,否则就插入数据begindelete Adelete Bdelete Cendinsert into A (字段A,字段B,.....)VALUES(数据1,数据2,.....)insert into B (字段A,字段B,.....)VALUES(数据1,数据2,.....)insert into C (字段A,字段B,.....)VALUES(数据1,数据2,.....)END如上就是一个简单的存储过程了,完成后点击执行就行了。
SQL Server 作业计划介绍SQL Server 作业计划是 SQL Server 数据库管理系统中的一个重要功能,它允许用户自动执行一系列的任务。
这些任务可以包括备份数据库、优化查询、清理日志等等。
通过设置作业计划,用户可以在指定的时间间隔内自动执行这些任务,从而提高数据库管理的效率和可靠性。
在本文中,我们将深入探讨 SQL Server 作业计划的各个方面,包括作业计划的创建、调度、监控和管理等内容。
我们还将介绍一些常用的作业计划场景,并提供一些最佳实践和注意事项。
创建作业计划创建作业计划是使用 SQL Server 作业计划功能的第一步。
下面是创建作业计划的步骤:1.打开 SQL Server Management Studio(SSMS)并连接到目标 SQL Server实例。
2.在对象资源管理器中,展开“SQL Server 代理”节点,右键单击“作业”文件夹,选择“新建作业”。
3.在“常规”选项卡中,输入作业的名称和描述信息。
4.在“步骤”选项卡中,单击“新建”按钮,输入步骤的名称、类型和脚本等信息。
5.在“调度”选项卡中,配置作业的调度方式,包括执行频率、起始时间和结束时间等。
6.在“警报”选项卡中,配置作业的警报设置,以便在作业执行出现错误或警告时通知管理员。
7.单击“确定”按钮,保存作业计划。
调度作业计划调度作业计划是指设置作业计划在何时执行的过程。
SQL Server 作业计划提供了多种调度选项,包括一次性执行、按日执行、按周执行、按月执行等。
下面是一些常用的调度选项:•每天一次:作业计划每天在指定的时间点执行一次。
•每小时一次:作业计划每小时在指定的分钟执行一次。
•每周一次:作业计划每周在指定的日期和时间点执行一次。
•每月一次:作业计划每月在指定的日期和时间点执行一次。
通过合理设置调度选项,可以确保作业计划在适当的时间执行,从而避免对数据库和系统性能造成不必要的影响。
如何设置SQL Server数据库定时操作如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,可以用管理->SQL Server代理->作业来实现。
1、管理->SQL Server代理->作业(按鼠标右键)->新建作业->2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号->分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用户[也可选其它的登录]->描述[填写本次工作详细描述内容];[ 创建作业分类的步骤:SQL Server代理->作业->右键选所有任务->添加、修改、删除]3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型[Transact-SQL(TSQL)脚本]->数据库[要操作的数据库]->命令[ 如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的*.sql文件如果要执行存储过程,填exec p_procedure_name v_parameter1,[ v_paramete r2…v_parameterN]]->确定(如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、编辑、删除);4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现->更改[调度时间表]->确定(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉);5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows应用程序系统日志] ->确定。
跟作业执行相关的一些SQL Server知识:SQLSERVERAGENT服务必须正常运行,启动它的NT登录用户要跟启动SQL Server数据库的NT登录用户一致。
sql server中存储过程的用法存储过程是一组预编译的SQL语句的集合,可以在SQL Server数据库中创建和存储。
存储过程通常用于执行常见的数据库操作,例如插入、更新和删除数据,以及查询数据。
存储过程的用法如下:1. 创建存储过程:使用CREATE PROCEDURE语句创建存储过程。
存储过程可以带有参数,以接收输入值。
2. 执行存储过程:使用EXECUTE语句执行存储过程。
可以提供参数值,以便在执行过程中使用。
3. 修改存储过程:使用ALTER PROCEDURE语句修改存储过程的定义。
可以添加、删除或修改存储过程中的语句。
4. 删除存储过程:使用DROP PROCEDURE语句删除存储过程。
5. 嵌套存储过程:可以在一个存储过程中嵌套另一个存储过程。
这可以通过在一个存储过程中调用另一个存储过程来实现。
6. 事务处理:存储过程可以包含事务处理语句,以确保数据库操作的一致性和完整性。
7. 返回结果集:存储过程可以返回查询结果集,可以使用SELECT语句将结果集作为存储过程的输出。
也可以使用OUTPUT参数来返回存储过程的结果。
8. 异常处理:存储过程可以包含异常处理语句,以处理可能发生的错误或异常情况。
9. 定时调度:可以通过创建作业和调度器来定期执行存储过程。
这可以使用SQL Server代理功能实现。
以上是SQL Server存储过程的一些常见用法。
存储过程提供了一种在数据库中执行常见任务的有效和可重复使用的方法。
存储过程可以提高数据库的性能和安全性,同时减少了应用程序与数据库之间的数据传输量。
使⽤SQLServer2014作业定时执⾏⽆参的存储过程⼀、存储过程1.新建存储过程按照下图找到存储过程,右键“新建”选择”存储过程”此时在右侧会打开⼀个窗⼝,如下图。
2.填写创建存储过程语句填写存储过程名称,因为是⽆参的存储过程,所以把参数部分去掉,begin和and之间填写要执⾏的语句。
4.执⾏创建写好后按f5执⾏sql语句,刷新左侧列表就可以看到创建的存储过程了。
5.修改存储过程选中要修改的存储过程右键选中修改,在右侧会打开⼀个窗⼝,与上⾯的create不同,这⾥是 ALTER6.执⾏修改修改好后按F5运⾏⼆、作业如果数据库的代理打不开,可以打开操作系统的服务,在服务⾥,找到sqlserver代理,设置成⾃动启动。
就可以了。
1.新建作业按照下图找到代理下的作业,右键选择”新建作业”2.常规选项卡输⼊作业的名称并将已启⽤状态勾选上,其他的默认,也可根据需要修改。
3.步骤选项卡点击左下⾓"新建"按钮在弹出的窗⼝中,输⼊步骤名称、选择数据库及输⼊命令脚本后,点击确定按钮即可。
4.计划选项卡点击左下⾓"新建"按钮在弹出的窗⼝中输⼊名称,频率等根据⾃⼰需要。
输⼊好后,点击确定按钮即可。
5.警报选项卡打开警报选项卡后,点击新建按钮,这⾥的操作是设置执⾏命令时出现问题发出的警报。
打开警报设置窗⼝后,输⼊名称、类型、定义、条件等。
输⼊好后,点击确定按钮即可。
6.通知选项卡通知选项卡中,可以配置作业完成时要执⾏的操作,例如发送电⼦邮件、寻呼、写⼊Windows应⽤程序事件⽇志、⾃动删除作业等。
7.⽬标选项卡⽬标选项卡中可以设置⽬标为本地服务器还是多台服务器,如果是多台需要进⾏相应的配置操作。
8.确定创建所有操作都完成后,点击窗⼝中的确定按钮,这个作业就创建完成了。
SQL2008 创建定时任务作业1.打开【SQL Server Management Studio】,在【对象资源管理器】列表中选择【SQL Server 代理】;--2.鼠标右击【SQL Server 代理】,选择【启动(S)】,如已启动,可以省略此步骤;--3.展开【SQL Server 代理】列表,右击【作业】-->【新建作业】;--3.1 在【常规】选项卡中:-- 输入作业名称,如"My Job";--3.2 在【步骤】选项卡中:--3.2.1 点击【新建】,输入【步骤名称】,如“步骤1”,类型默认T-SQL脚本,也可以选择SSIS包等;--3.2.2 在【数据库】一栏选择要作业处理的数据库,在【命令】的右边空白编辑栏输入要执行的SQL 代码,EXEC p_Name --如:执行一个P_Name的存储过程-- 也可以点击命令下面的【打开】,打开.sql脚本;--3.2.3 输入运行脚本后,建议点击【分析】,确保脚本语法正确,然后点击下面的【确定】按钮;--3.3 在【计划】选项卡中:--3.3.1 点击【新建】,输入【计划名称】,如“计划1”,计划类型默认是”重复执行”,也可以选择执行一次等;--3.3.2 在【频率】-->【执行】处选择“每天”、“每周”或“每月”,以“每天”为例,间隔时间输入间隔几天执行一次,-- 下面还可以选择每天一次性执行或间隔一定的时间重复执行--3.3.3 在【持续时间】中选择计划开始执行的【起始日期】和【截止日期】,然后点击【确定】按钮;--注意要将服务设置为自动启动,否则在重启服务器后作业就不运行了。
--启动代理服务的方法:--开始-->运行-->输入services.msc-->找到【SQL Server 代理】的服务并双击-->【启动类型】选择“自动”-->【确定】--至此,定时作业已创建完毕。
MS SQL Server:定时作业的设置方法如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,可以用管理->SQL Server代理->作业来实现。
1、管理->SQL Server代理->作业(按鼠标右键)->新建作业2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号->分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用户[也可选其它的登录]->描述[填写本次工作详细描述内容];创建作业分类的步骤: SQL Server代理->作业->右键选所有任务->添加、修改、删除3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型[Transact-SQL(TSQL)脚本]->数据库[要操作的数据库]->命令 [ 如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的*.sql。
文件如果要执行存储过程,填 exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN] ->确定 (如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、编辑、删除);4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现-> 更改[调度时间表]->确定(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉);5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows应用程序系统日志] ->确定。
跟作业执行相关的一些SQL Server知识:SQL Server Agent服务必须正常运行,启动它的NT登录用户要跟启动SQL Server数据库的NT登录用户一致;点作业右键可以查看作业执行的历史记录情况,也可以立即启动作业和停止作业。
sqlserver执行定时任务的语句摘要:1.SQL Server 定时任务介绍2.创建定时任务的方法3.SQL Server 执行定时任务的语句4.定时任务示例5.总结正文:SQL Server 是一个关系数据库管理系统,它提供了许多功能,可以帮助用户管理和操作数据。
其中,定时任务是一种可以在特定时间自动执行某项操作的功能,非常方便实用。
要创建定时任务,首先需要使用SQL Server Management Studio (SSMS) 或Transact-SQL (T-SQL) 语句来创建一个作业。
创建作业的语句如下:```CREATE JOB [JobName]WITHRETURNS (varchar(50))ASBEGIN-- 任务执行的SQL 语句END```接下来,需要设置定时任务的触发器。
可以使用`CREATE TRIGGER` 语句来创建一个触发器,该触发器将在特定时间执行作业。
例如,以下语句将在每天凌晨1 点执行作业:```CREATE TRIGGER [TriggerName]ON [DATABASE]FOR SCHEDULE_NAMEASBEGINEXEC [JobName]END```其中,`SCHEDULE_NAME` 是要使用的计划名称,可以使用`SYSTEM_TIME` 或`CUSTOM_TIME` 类型来指定触发器的时间。
下面是一个完整的示例,该示例创建了一个名为`MyJob` 的作业,并在每天凌晨1 点执行该作业:```sql-- 创建作业CREATE JOB MyJobWITHRETURNS (varchar(50))ASBEGINPRINT "Hello, this is a scheduled job!"END-- 创建触发器CREATE TRIGGER MyTriggerON DATABASEFOR SCHEDULE_NAMEASBEGINEXEC MyJobEND```创建好作业和触发器后,定时任务将自动执行。
如何在SQLServer上定时执行T-SQL语句
1.启动Microsoft SQL Server Management Studio
2.找到菜单管理-> 维护计划菜单,然后鼠标右击,选择“新建维护计划”,如下图所示。
3.在“新建维护计划”窗口中输入名称后点击<确定>,建议输入有意义的名称。
如下图所示。
4.在左下半窗口中,找到“执行T-SQL语句”任务,鼠标点击该项目不放,然后拖曳到右边的窗口中,则右边窗口出现如下图形。
5.输入必要的说明后,点击按钮以设置定时任务选项,如下图所示。
6.选择需要定时执行的间隔以及时间点,然后点击<确定>。
如下图-每天凌晨0:00开始执行,该任务到2015-2-28日停止执行。
7.双击图片“执行T-SQL语句”任务,然后输入T-SQL语句,如下图所示。
8.点击<确定>,保存该T-SQL语句。
9.鼠标右击该任务,选择“保存选定项”,最后关闭该任务选项。
10.建议先设定较为接近的时间参数,以查看定时任务是否生效。
sqlserver通过脚本创建定时任务通过脚本创建JOB: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), --要执行的命令@serverName sysname='', --job server名@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 intselect @ftype=case @freqtype when 'day' then 4 when 'week' then 8when 'month' then 16 end,@fstype=case @fsinterval when 1 then 0 else 8 e ndif @fsinterval<>1 set @time=0set @ffactor=case @freqtype when 'day' then 0 els e 1 endEXEC 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分执行if @servername=''set @servername=@@servernameEXEC msdb..sp_add_jobserver @job_name = @jobnam e,@server_name = @servernamego--调用--每天执行的作业exec p_createjob @jobname='dd',@sql='insert B select convert(char(10),getdate(),120),1+ (select max([text]) from B)',@servername='job服务器名',@dbname='数据库名',@freqtype='day',@time='000000'====================================== =========================以下是另一个版本,出自博客园/datasky/archive/2006/12/28/6063 54.html--每月执行的作业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 intselect @ftype=case @freqtype when 'day' then 4when 'week' then 8when 'month' then 16 end,@fstype=case @fsinterval when 1 then 0 else 8 endif @fsinterval<>1 set @time=0set @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 = @jobname ,@server_name = N'(local)'go。
SQL Server 如何定时作业(执行某个存储过程)如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL 语句时,可以用管理->SQL Server 代理->作业来实现。
1、管理->SQL Server 代理->作业(按鼠标右键)->新建作业->2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号-> 分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server 用户[也可选其它的登录]->描述[填写本次工作详细描述内容];[ 创建作业分类的步骤:SQL Server 代理->作业->右键选所有任务->添加、修改、删除]3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型[Transact-SQL(TSQL)脚本]->数据库[要操作的数据库]->命令[ 如果是简单的SQL 直接写进去即可,也可用打开按钮输入一个已写好的*.sql 文件如果要执行存储过程,填exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN] ]->确定(如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、也可以对已有的多个步骤插入、编辑、编辑、编辑、删删除);4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现->更改[调度时间表]->确定(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉);5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows 应用程序系统日志] ->确定。
SQL Server如何定时作业(执行某个存储过程)
如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,可以用管理->SQL Server代理->作业来实现。
1、管理->SQL Server代理->作业(按鼠标右键)->新建作业->
2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号->
分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用户[也可选其它的登录]->
描述[填写本次工作详细描述内容];
[ 创建作业分类的步骤:
SQL Server代理->作业->右键选所有任务->添加、修改、删除]
3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型[Transact-SQL(TSQL)脚本]->
数据库[要操作的数据库]->命令
[ 如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的*.sql文件
如果要执行存储过程,填
exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN]
]
->确定
(如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、编辑、删除);
4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现->
更改[调度时间表]->确定
(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉);
5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows应用程序系统日志] ->确定。
跟作业执行相关的一些SQL Server知识:
SQLSERVERAGENT服务必须正常运行,启动它的NT登录用户要跟启动SQL Server数据库的NT登录用户一致。
点作业右键可以查看作业执行的历史记录情况,也可以立即启动作业和停止作业。
最近在看作业历史记录时,发现有的作业记录的历史记录多,有的作业记录的记录的历史记录少.
如何能使某些作业按各自的需求,保留一段时间.比如保留一个月的历史记录.
看了SQL Server的在线帮助文档,里面介绍说:
在管理->SQL Server代理->右键选属性->作业系统->限制作业历史记录日志的大小-> 作业历史记录日志的最大大小(行数) 默认为1000 如果某台机器的作业数量很多,一定要
提高它,例如为100000
每个作业历史记录日志的最大行数默认为100 如果作业每天执行两次,需要保留一个月的日志,可以设为60
它们之间有一个相互制约关系, 我们可以根据自己的需要来改.
如果SQL Server服务器改过机器名, 管理是旧名称时建立的job的时候可能会遇到
错误14274: 无法添加、更新或删除从MSX服务器上发起的作业(或其步骤或调度) 看了Microsoft的文档:
/default.aspx?scid=kb;en-us;281642
说SQL Server 2000系统里msdb..sysjobs 里originating_server 字段里存的是原来的服务器的名称.
24X7在用的系统肯定不能按上面Microsoft的文档说的那样把名字改回来又改过去。
于是想,msdb..sysjobs 能否update originating_server 字段成现在在用的新服务器名?
use msdb
select * from sysjobs
找到originating_server 字段还是旧服务器的job_id, 然后执行update语句:。