需求
(1)需要把现有test库备份,修改成test_当前日期,加入现在是 20200716,就改成 test_200716。
(2)然后重新创建数据库test,把原来的表结构和存储过程函数一类的全部构建到新建的 test 库上。
(3)把现有用户对新建的这个 test 库授权读写访问
(4)把 test_200716 的一些数据清理掉,并且把一部分数据比如某些表的三天内数据插入到新建的 test 库中
(5)然后以为有多个操作,每次我们新建一个 test_200716 这样的,我们就把最老的 比如 test_200602库 给删掉(删之前脚本里有操作先备份避免误删和无法找回)
(6)操作完之后对线上数据库备份,并且删除4个月前的备份文件
【0】bat架构结构
【1】bat脚本
@echo off
set today=%date:~0,4%%date:~5,2%%date:~8,2%
set logfile=log_%today%.log
set errorfile=error_%today%.logecho--------------------- >>%logfile%
echo %date%%time%>>%logfile%echo 测试引擎服务是否启动......set /p="测试引擎服务是否启动......">%logfile%sqlcmd-S 127.0.0.1,1433 -Q "declare @i int;select @i=1;" 2>%errorfile%
IF ERRORLEVEL 1 echo fail>>%logfile%
IF ERRORLEVEL 0 echo ok>>%logfile%echo 开始重命名数据库/创建数据库......set /p="开始重命名数据库/创建数据库......">%logfile%sqlcmd-S 127.0.0.1,1433 -i 1_DB_renameAndCreate.sql -E -b 2>>%errorfile% 1>db_log_%today%.log
IF ERRORLEVEL 1 echo fail......请检查db_log_%today%.log 文件>>%logfile%
IF ERRORLEVEL 0 echo ok>>%logfile%echo 新建表和存储过程_修改存储过程......set /p="新建表和存储过程_修改存储过程......">%logfile%sqlcmd-S 127.0.0.1,1433 -i 2_新建表和存储过程_修改存储过程.sql -E -b 2>>%errorfile% 1>>db_log_%today%.log
IF ERRORLEVEL 1 echo fail......请检查db_log_%today%.log 文件>>%logfile%
IF ERRORLEVEL 0 echo ok>>%logfile%echo 授权_收缩日志......set /p="授权_收缩日志......">%logfile%sqlcmd-S 127.0.0.1,1433 -i 3_授权_收缩日志.sql -E -b 2>>%errorfile% 1>>db_log_%today%.log
IF ERRORLEVEL 1 echo fail......请检查db_log_%today%.log 文件>>%logfile%
IF ERRORLEVEL 0 echo ok>>%logfile%echo 维护......set /p="维护......">%logfile%sqlcmd-S 127.0.0.1,1433 -i 4_维护.sql -E -b 2>>%errorfile% 1>>db_log_%today%.log
IF ERRORLEVEL 1 echo fail......请检查db_log_%today%.log 文件>>%logfile%
IF ERRORLEVEL 0 echo ok>>%logfile%echo 删除最早的库_删除4个月前的备份文件......set /p="删除最早的库_删除4个月前的备份文件......">%logfile%sqlcmd-S 127.0.0.1,1433 -i 5_删除最早的库_删除4个月前的备份文件.sql -E -b 2>>%errorfile% 1>>db_log_%today%.log
IF ERRORLEVEL 1 echo fail......请检查db_log_%today%.log 文件>>%logfile%
IF ERRORLEVEL 0 echo ok>>%logfile%echo 启动sql server代理服务......set /p="启动sql server代理服务......">%logfile%net start "SQLSERVERAGENT"1>>%logfile%net start "SQLSERVERAGENT"2>>%logfile%echo 执行完毕,请查看%errorfile%与%logfile%!
timeout/t 100
【2】1_DB_renameAndCreate.sql(重命名与创建数据库)
修改老数据库 test为 test_当前日期,新建一个test
begintryusemaster;set nocount on;print '----------------------------------------------'
print '~~~~~~~~~~1_DB_renameAndCreate.sql~~~~~~~~~~~~'
print '-------------------------------------------