SQL Server是如何定时作业的

SQL Server是如何定时作业的,第1张

如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或 字符以内的SQL语句时 可以用管理 >SQL Server代理 >作业来实现

管理 >SQL Server代理 >作业(按鼠标右键) >新建作业 >

新建作业属性(常规) >名称[自定义本次作业的名称] >启用的方框内是勾号 >分类处可选择也可用默认的[未分类(本地)] >所有者默认为登录SQL Server用户[也可选其它的登录] >描述[填写本次工作详细描述内容];

[ 创建作业分类的步骤 SQL Server代理 >作业 >右键选所有任务 >添加 修改 删除 ]

新建作业属性(步骤) >新建 >步骤名[自定义第一步骤名称] >类型[Transact SQL(TSQL)脚本] >数据库[要 *** 作的数据库] >命令[ 如果是简单的SQL直接写进去即可 也可用打开按钮输入一个已写好的 sql文件

如果要执行存储过程 填exec p_procedure_name v_parameter [ v_parameter …v_parameterN]] >确定(如果有多个步骤 可以再次调用下面的新建按钮;也可以对已有的多个步骤插入 编辑 删除);

建作业属性(调度) >新建调度 >名称[自定义调度名称] >启用的方框内是勾号 >调度 >反复出现 >更改[调度时间表] >确定(如果只要保存此作业 不要定时做可以把启用的方框内是勾号去掉);

建作业属性(通知) >用默认的通知方法就好[当作业失败时 写入Windows应用程序系统日志] >确定

跟作业执行相关的一些SQL Server知识

SQLSERVERAGENT服务必须正常运行 启动它的NT登录用户要跟启动SQL Server数据库的NT登录用户一致

点作业右键可以查看作业执行的历史记录情况 也可以立即启动作业和停止作业

最近在看作业历史记录时 发现有的作业记录的历史记录多 有的作业记录的记录的历史记录少

如何能使某些作业按各自的需求 保留一段时间 比如保留一个月的历史记录

看了SQL Server的在线帮助文档 里面介绍说

在管理 >SQL Server代理 >右键选属性 >作业系统 >限制作业历史记录日志的大小 >

作业历史记录日志的最大大小(行数) 默认为 如果某台机器的作业数量很多 一定要提高它 例如为

每个作业历史记录日志的最大行数 默认为 如果作业每天执行两次 需要保留一个月的日志 可以设为

它们之间有一个相互制约关系 我们可以根据自己的需要来改

如果SQL Server服务器改过机器名 管理是旧名称时建立的job的时候可能会遇到

错误 无法添加 更新或删除从MSX服务器上发起的作业(或其步骤或调度)

说SQL Server 系统里msdb sysjobs 里originating_server 字段里存的是原来的服务器的名称

X 在用的系统肯定不能按上面Microsoft的文档说的那样把名字改回来又改过去

于是想 msdb sysjobs 能否update originating_server 字段成现在在用的新服务器名

use msdb

select from sysjobs

找到originating_server 字段还是旧服务器的job_id 然后执行update语句

lishixinzhi/Article/program/SQLServer/201311/22271

一、实现思路与应用场景

1 中间数据库

i 新建一个数据库以及数据库管理员账号,并赋予且仅赋予该账号管理该数据库的所有权限。

ii 设置定时任务定期向该数据库推送表数据。

2 应用场景

i 向第三方提供数据的一种方式,安全性高,不适宜应用于对数据及时性要求高的项目。

二、 应用原理

当中间数据库中的表名与当前数据库中的表名相同时,数据表内的数据会被覆盖;

如果中间数据库的表在sql中不存在,则不受影响

三、具体实现

1 创建用户

CREATE USER `user_name`@`%` IDENTIFIED BY 'password';

2 赋予权限

grant all privileges on 想授权的数据库 to 'user_name'@'%';

flush privileges; 刷新权限

3 定时任务

i 数据库表的导出与导入命令

/usr/bin/mysqldump -h 202202202202 -u dbuser -pdbuser --single-transaction slave > tablesql

/usr/bin/mysql -u dbuser -pdbuser database_name < /home/mysql/tablesql

ii 创建sql文件的临时存放目录

mkdir /home/mysql

iii 脚本编写

#!/bin/bashTIME=`date +%Y%m%d%H`rm -rf /home/mysql//usr/bin/mysqldump -h 172168102129 -u dbuser -pdbuser --single-transaction database_name > /home/mysql/table_$TIMEsql/usr/bin/mysql -u dbuser -pdbuser database_name < /home/mysql/table_$TIMEsql

iv cron定时任务

将脚本report_syncsh 保存到/usr/bin下:

mv report_syncsh /usr/bin

增加计划任务(每天中午11点执行一次)

crontab -e(确保crontab安装)

00 11 /usr/bin/report_syncsh

————————————————

版权声明:本文为CSDN博主「yangxinyujy」的原创文章,遵循 CC 40 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:>

以上就是关于SQL Server是如何定时作业的全部的内容,包括:SQL Server是如何定时作业的、sql server2012建一个中间库,想要实现业务库往中间库定时同步数据,有几种方式可以实现、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9418195.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存