2016年3月1号,北京出差,documentbrowser系统改善上线。
其中有一个数据库表需要每天进行同步,原计划使用SQLServer的作业来执行又方便又快捷,但是客户的数据库是05的express版没有数据库作业。客户系统已经使用多年,如果升级数据库正式版会存在一定的风险,一担升级失败,客户的生产环境瘫痪,耽误了客户那就不好了。该怎么办呢?首先想到是用Windows服务,在系统启动时自动执行服务,在服务中每天定时执行数据库同步任务,但是需要编写程序并制作成.exe安装程序,有点麻烦,不适合现在的情况。
后来想了想,用windows自己的计划任务,每天定时执行.bat文件,在bat文件中执行数据库同步脚本,又方便又快捷还安全。下面就把步骤写一下,作为备忘。
一.windows计划任务执行数据库脚本手顺
1. 将updateExtend08Extend09.bat和mysql.sql拷贝到c盘后,如下图
2. 在Windows的控制面板找到“计划任务”,并双击进入设置
3. 点击“添加任务计划”创建一个新的计划任务
4.下一步
5.选择“浏览。。。”
6.选择c盘下的“updateExtend08Extend09.bat”点击“打开”
7.选择“每天”执行任务,下一步:
8.设置执行时间和起始日期,点击;下一步
9.输入本机的登录名和密码,点击下一步
10.点击完成设置完毕。
二.在数据库中执行“数据库脚本.txt”创建存储过程
1 CREATE PROCEDURE [dbo].[SP_UpdateUserExtend08andExtend09] 2 3 AS 4 BEGIN 5 -- SET NOCOUNT ON added to prevent extra result sets from 6 -- interfering with SELECT statements. 7 SET NOCOUNT ON; 8 9 --员工(包括专家)审批人为上级经理 10 update AddressTBL 11 set Extend08=b.mgr_code, 12 Extend09=b.mgr_name 13 from ( 14 select uid, mgr_code,mgr_name from View_ApprovalLine 15 ) as b 16 where AddressTBL.UserID=b.uid collate Chinese_PRC_CI_AI_WS 17 and AddressTBL.Extend03='ECC' 18 and AddressTBL.Extend02 in('特殊雇员','业务经理','主管','助理','专家','专员') 19 20 21 --经理(包括高级专家)审批人为上级部门经理 22 23 update AddressTBL 24 set Extend08=b.dm_code, 25 Extend09=b.dm_name 26 from ( 27 select uid, dm_code,dm_name from View_ApprovalLine 28 ) as b 29 where AddressTBL.UserID=b.uid collate Chinese_PRC_CI_AI_WS 30 and AddressTBL.Extend03='ECC' 31 and AddressTBL.Extend02 in('经理') 32 33 --部门经理及以上同步为法务窗口 34 update AddressTBL 35 set Extend08='ecclegal', 36 Extend09='法务窗口' 37 where AddressTBL.Extend03='ECC' 38 and AddressTBL.Extend02 in ('部门经理','董事长','副总经理','高级总监','总监','总经理','其他') 39 40 41 END
脚本运行后会在dbrowser_address库中创建一个新的存储过程。
三.修改批处理文件,设置数据库链接地址和数据库用户,数据库密码
找到C:updateExtend08Extend09.bat右键选择编辑
将红框中的数据库地址,用户名和密码替换成本机的即可。
sqlcmd -?查看命令参数
mysql.sql代码:
1 use dbrowser_address 2 go 3 exec SP_UpdateUserExtend08andExtend09 4 go
这个例子把批处理文件和my.sql脚本放到了c盘,只是为了举例说明,可以按照实际情况将两个文件放到任意位置(路径中最好不要有中文),然后在设置计划任务时指定.bat即可。
完