SQL Server如何定时作业(执行某个存储过程)

合集下载

Sqlserver数据库定时任务,数据库作业,数据库定时任务

Sqlserver数据库定时任务,数据库作业,数据库定时任务

Sqlserver数据库定时任务,数据库作业,数据库定时任务当需要周期性的去执⾏⼀个⽅法时,我们可以先写好⽅法,然后交给数据库去完成就可以的。

步骤:⾸先打开SQL数据库中SQLServer代理--》右键作业--》新建作业:
如果SQL Server代理被禁⽤了,那就邮件启动代理即可;
或者这样:
选择计算机——>设备管理——>服务与应⽤程序——>服务——>SQL server 代理
然后把SQL server 代理启动,并设置成⾃动(如果只是测试可直接在数据库启动)
⼀切准备就绪:
1.在常规⾯板中配置参数
2.新建步骤
3.指定计划⽅法
4.新建计划
5.设置执⾏计划时间
6.下⾯是执⾏的计划⽅法,因为我新建作业时接近4点,所以定时计划设置的是每天四点整,便于测试吧, 16点后查询发现成功了。

总结⼀下⼦:步骤三中数据库⼀定不能是默认的否则定时计划失败,原因是找不到计划⽅法。

SQLserver使用作业定时执行脚本

SQLserver使用作业定时执行脚本

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语句

SQLServer定时执行SQL语句

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设置定时作业(执行某个存储过程)

SQL Server设置定时作业(执行某个存储过程)

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()函
数获取当前时间戳,并在执行过程中记录时间戳。

在存储过程执行结束后,再次记录时间戳,并计算执行时间。

无论使用哪种方法,建议多次执行存储过程并取平均值,以获得更准确的结果。

SQL Server定时作业job的设置方法

SQL Server定时作业job的设置方法

跟作业执行相关的一些SQL Server知识:
SQLSERVERAGENT服务必须正常运行,启动它的NT登录用户要跟启动SQL Server数据库的NT登录用户一致。
点作业右键可以查看作业执行的历史记录情况,也可以立即启动作业和停止作业。
where job_id='B23BBEBE-A3C1-4874-A4AB-0E2B7CD01E14'
(所影响的行数为 1 行)
这样就可以添加、更新或删除那些曾经出error 14274 的作业了。
如果想把作业由一台机器迁移到另一台机器,可以先保留好创建作业的脚本, 然后在另一台机器上运行。
作业历史记录日志的最大大小(行数) 默认为1000 如果某台机器的作业数量很多,一定要提高它,例如为100000
每个作业历史记录日志的最大行数 默认为100 如果作业每天执行两次,需要保留一个月的日志,可以设为60。
它们之间有一个相互制约关系, 我们可以根据自己的需要来改。
导出所有作业的创建脚本操作步骤:
管理->SQL Server代理->作业(鼠标右键)->所有任务->生成SQL脚本->保存到操作系统下的某个sql文件
导出某一个作业的创建脚本操作步骤:
管理->SQL Server代理->作业->选中待转移的作业(鼠标右键)->所有任务->生成SQL脚本->保存到OS下的某个sql文件
use msdb
select * from sysjobs
找到originating_server 字段还是旧服务器的job_id, 然后执行update语句:
update sysjobs set originating_server='new_server_name'

SQLserver存储过程写法与设置定时执行存储过程方法详解

SQLserver存储过程写法与设置定时执行存储过程方法详解

最近工作中需要写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如上就是一个简单的存储过程了,完成后点击执行就行了。

怎样让sqlserver后台定时执行某个存储过程?

怎样让sqlserver后台定时执行某个存储过程?
EXEC sp_add_job @job_name = '作业名字'
EXEC sp_add_jobstep @job_name = '作业名字',
@step_name = '步骤名子',
@subsystem = 'TSQL',
@command = 'EXEC 库名..你的过程名',
@retry_attempts = 5, --重试次数
@retry_interval = 5 --重试间隔
EXEC sp_add_jobschedule @job_name = '作业名字',
@name = '作业调度名字',
@freq_type = 4, -- 每天
@freq_intervaltart_time = 250 --开始时间
确定在调度项中点新建调度可定义调度类型确定确定即可
怎样让sqlserver后台定时执行某个存储过程?
你可以在管理器中新加一个作业,定时执行,
SQL SERVER企业管理器-》管理-》作业-》新建作业-》在常规项中:输入名称。步骤项:点新建-》输入步骤名、选所在的数据库、输入exec 存储过程名称。-》确定-》在调度项中 点新建调度-》可定义调度类型-》确定-》确定即可。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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语句:。

相关文档
最新文档