如果在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建一个中间库,想要实现业务库往中间库定时同步数据,有几种方式可以实现、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)