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即可。
完
