任务计划程序使用.bat定时/重启电脑时重置任务教程
因为客户工厂会时不时的断电,本来设置了一个SQL
server的作业来定时执行,但是断电的话就超过了可执行的时间,也就是这个作业并不会生效,也并没有解决这个问腿,对于这个需要来说只是一个重置计数器的作业而已。
所以我想了一下还是用Windows自带的任务计划程序来代替,下面就是集体操作步骤啦!
批处理文件和sql语句
分享一下我的批处理文件与SQL文件吧!
Counter.sql
USE [iPlant_ACC_MY2]
GO
UPDATE [dbo].[PACK_GENERATOR]
SET counter = '0'
GO
Reset_Counter.bat
@ECHO OFF
SET dbhost=主机名(例如:127.0.0.1)
SET dbuser=用户名(例如:sa)
SET dbpasswd=用户密码(例如:admin)
SET dbName=数据库名称(例如:test)
SET sqlpath=E:\A(bat文件的根目录)
SET sqlfile=counter.sql(需要执行执行sql的文件)
:: 执行 SQL 脚本
osql -S %dbhost% -U %dbuser% -P %dbpasswd% -d %dbName% -i "%sqlpath%\%sqlfile%"
//bat文件最后一定不要加类似pause的命令,也就是说,不要加有等待的命令,加了话就造成了0x41301报错问题,适用其他类型的脚本。
@ECHO Done!
另外普及一下osql常见参数:
用法: Sqlcmd [-U 登录 ID] [-P 密码]
[-S 服务器] [-H 主机名] [-E 可信连接]
[-N 加密连接][-C 信任服务器证书]
[-d 使用数据库名称] [-l 登录超时值] [-t 查询超时值]
[-h 标题] [-s 列分隔符] [-w 屏幕宽度]
[-a 数据包大小] [-e 回显输入] [-I 允许带引号的标识符]
[-c 命令结束] [-L[c] 列出服务器[清除输出]]
[-q “命令行查询”] [-Q “命令行查询” 并退出]
[-m 错误级别] [-V 严重级别] [-W 删除尾随空格]
[-u unicode 输出] [-r[0|1] 发送到 stderr 的消息]
[-i 输入文件] [-o 输出文件] [-z 新密码]
[-f <代码页> | i:<代码页>[,o:<代码页>]] [-Z 新建密码并退出]
[-k[1|2] 删除[替换]控制字符]
[-y 可变长度类型显示宽度]
[-Y 固定长度类型显示宽度]
[-p[1] 打印统计信息[冒号格式]]
[-R 使用客户端区域设置]
[-b 出错时中止批处理]
[-v 变量 = “值”…] [-A 专用管理连接]
[-X[1] 禁用命令、启动脚本、环境变量[并退出]]
[-x 禁用变量替换]
[-? 显示语法摘要]
此处使用的主要是
-S 服务器ip
-d 数据库名称
-U 连接用户名
-P 用户的密码
-i 执行的sql文件
-o sql语句输出的结果文件
以上批处理方法是学习了CSDN的一位博主提供的,但是做了些改动,如想要原博主的,原文链接:https://blog.csdn.net/bin470398393/article/details/81947108
创建任务计划程序:
1、在Windows中搜索并打开 “ 任务计划程序 ” 。
2、选择右侧的 “ 创建任务 ” 。
3、打开 “ 常规 ” 选项卡→填写任务名称→选择 “ 不管用户是否登录都要运行 ” →勾选 “ 使用最高权限运行 ” ,如果没有勾选的话,权限不足也是无效的,任务会执行不起来。
4、打开 “ 触发器 ” 选项卡→点击 “ 新建 ” 。
5、按需求选择任务触发时间,我这里选的是当系统启动时执行这个任务→点击 “ 确定 ” 。
![设定任务启动时间](https://img-blog.csdnimg.cn/23adcc7027674d73a9097c6e0a5d4ec2.png
6、打开 “ 操作 ” 选项卡→点击 “ 新建 ” 。
7、点击 “ 浏览 ” 选择批处理所在的路径,“ 程序或脚本 ” 和 “ 添加参数 ” 都是.bat文件的文件目录,“ 起始于 ” 是.bat文件的根目录。
PS : 注意,文件目录千万不能有中文目录,会乱码,到时候会显示操作成功完成但是并没有生效。
8、打开 “ 条件 ” 选项卡→将 “ 如果计算机改用电池电源,则停止 ” 勾选掉,勾选 “ 唤醒计算机运行此任务 ” 和 “ 只有在计算机使用交流电源时才启动此任务 ” 。
9、打开 “ 设置 ” 选项卡→ 按需求配置,我这里是勾选了以下图中的,“ 允许按需运行任务 ” 这个代表我可以手动在任务计划程序中执行此任务。
PS:请再次检查一下所有配置项再点击确定,必须要确定你选定的用户是否拥有管理员权限,是否已勾选最高权限执行,以免任务执行失败或者是不执行,请务必要勾选该选项。
设置执行批处理脚本的用户权限
虽然我们的用户拥有管理员权限,但是没有执行批处理脚本的权限,这个需要设置的。
如果运行定时任务时出现这个错误,也是没有配置权限的问题:任务尚未运行(0x41303)。
PS:administrator和Administrators和Administrator有区别,请注意分辨。
1、打开 “ 本地安全策略→安全设置→本地策略→用户权限分配 ” 。
2、在右侧列表双击 “ 作为批处理作业登录 ” → 点击 “ 添加用户或组 ” 按钮,将执行批处理作业的用户添加进去即可。
运行任务
1、这个就是我们新建的任务程序,重启电脑就会执行了,执行成功就会提示 “ 操作成功完成(0x0)” 。
如何手动测试bat文件
可以在运行任务计划程序之前,先测试运行一下批处理文件,看看是否可以正常运行。
1、快捷键 “ Win+R ” →输入“ cmd ” → 点击 “ 确定 ” →输入启动批处理的语句后回车即可。
//运行批处理的语句:Start (.bat的文件路径)
start E:\A\Reset_Counter.bat
2、运行成功示意图。
小知识
如果任务计划程序的选项卡中 “ 历史记录已禁用 ” ,可以在 “ 任务计划程序库 ” 右击→点击选项卡中的 “ 启用所有任务历史记录 ” 就可以查看历史记录啦,这样会看问题会方便很多。
问题合集:
windows任务计划程序0x41301问题解决方法:
解决方法:
1.bat文件最后一定不要加类似pause的命令,也就是说,不要加有等待的命令,加了话就造成了0x41301报错问题,适用其他类型的脚本。
2.选择“不管用户是否登录都要运行”,勾选最高权限运行,然后用保存密码方式;记住运行此任务的用户;
然后打开“控制面板”、“管理工具”,然后打开“本地安全策略”。在“本地安全策略”窗口中,依次单击“本地策略”、“用户权限分配”,然后单击“作为批处理作业登录”,将此执行此计划任务的用户增加到列表里就可以了。
原文链接:https://blog.csdn.net/weixin_44635274/article/details/107923716
在测试执行bat时报错,COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
由于没有当时的截图,我就暂时用该博主的了。
此错误的原因是由于一个事务只能对应一个操作,要么回滚要么提交,所以执行了ROLLBACK TRAN语句后一定不能再执行COMMIT TRAN语句!!!而无论是回滚事务还是提交事务,都是不会中断SQL处理流程的,要想中断流程就需要使用RETURN语句。
原文链接:https://shiyousan.com/post/f13d29b7-0d87-4168-bd8b-8b28b0991b5a