频道栏目
首页 > 资讯 > SQL Server > 正文

利用批处理完成sqlserver数据库备份,文件备机拷贝等操作

18-07-26        来源:[db:作者]  
收藏   我要投稿

应用环境下,数据库和文件经常需要备份,写了如下脚本,可做到备份sqlserver,并将备份文件压缩,拷贝到备份机器上,并且可以拷贝服务器上的图片或应用程序的其他文件到备份机器上

脚本如下,要有的拿去,记得更改红色内容为你本机的设置。

将脚本加到系统定时任务中执行,效果更佳

------------------------------------------------------------------------------------------------------------------------------------------

@echo off

:: --------数据自动备份----------

:: 功能:1.实现生产环境sqlserver数据备份,并将备份文件拷贝到备份服务器上

::       2.实现普通文件从生产环境下的文件,备份到备份服务器上

:: 原理:建立共享磁盘

::       数据库备份使用sqlcmd备份数据库文件,

::       使用rar压缩备份的数据库文件,并将压缩文件拷贝到共享磁盘

::       使用xcopy拷贝生产环境下的文件到备份服务器

::       关闭共享磁盘

:: rar程序路径

set rarexe="C:\Program Files (x86)\WinRAR\WinRAR.exe"

set result=1

:: Use WMIC to retrieve date and time

FOR /F "skip=1 tokens=1-6" %%G IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (

   IF "%%~L"=="" goto s_done

      Set _yyyy=%%L

      Set _mm=00%%J

      Set _dd=00%%G

      Set _hour=00%%H

      SET _minute=00%%I

      SET _second=00%%K

)

:s_done

:: Pad digits with leading zeros

      Set _mm=%_mm:~-2%

      Set _dd=%_dd:~-2%

      Set _hour=%_hour:~-2%

      Set _minute=%_minute:~-2%

      Set _second=%_second:~-2%

Set logtimestamp=%_yyyy%%_mm%%_dd%%_hour%%_minute%%_second%

goto make_dump

:s_error

echo 生成时间序列出错

Set logtimestamp=_

:make_dump

:: 开始执行备份操作

set  dbbackfilename=D:\MSSQL\Backup\mydatabase_%logtimestamp%.bak

~0,-4%.html

:: 创建磁盘映射

echo 开始创建磁盘映射H

call :CreateDriverH

:: 数据库备份文件路径

if %result% EQU 1 (

call :DataBaseBackUp %dbbackfilename%

) else ( goto :eof )

echo "开始压缩文件"  %dbbackfilename%

if %result% EQU 1 (

call :RarFile %rarbackfilename%  %dbbackfilename%

) else ( goto :eof )

echo "开始拷贝数据库备份文件"  %rarbackfilename%

if %result% EQU 1 (

call :CopyFolder %rarbackfilename%  H:\

del %rarbackfilename% 

) else ( goto :eof )

echo "开始拷贝文件备份文件"  %rarbackfilename%

if %result% EQU 1 (

call :CopyFolder "C:\Program Files\ServiceFiles"  "H:\BackFiles\ServiceFiles"

call :CopyFolder "C:\Program Files\ImagFiles"  "H:\BackFiles\ImagFiles"

) else ( goto :eof )

echo "删除磁盘映射H"

call :DeleteDriverH

if %result% EQU 1 (

 echo 执行完成

)

goto :eof

:: 创建磁盘映射H

:CreateDriverH

net use H: \\备份机的地址\Database_backup 登入密码 /USER:Administrator

if not exist "H:" (

set result=0

) else (

set result=1

)

goto:eof 

:: 删除磁盘映射H

:DeleteDriverH

if not exist "H:" (

 set result=1

 goto :eof

) else (

net use H: /del /y

)

if not exist "H:" (

set result=1

) else (

set result=0

)

goto:eof 

:: 备份数据库 参数是备份文件的路径

:DataBaseBackUp

echo "开始备份文件" %1

SQLCMD -S . -U 数据库用户名 -P 数据库登入密码 -d mydatabase -Q"BACKUP DATABASE mydatabase to disk='%1'" 

if exist "%1" (

  set result=1

) else (

  set result=0

)

goto:eof 

xcopy

:: 压缩文件 参数:压缩后的文件  压缩前的文件

:RarFile

echo 压缩文件 %rarexe% a "%1" "%2" 

%rarexe% a "%1" "%2" 

if exist "%1" (

  set result=1

  del "%2"

) else (

  set result=0

)

goto:eof 

:: 考别磁盘下的整个目录 参数:源路径 目标路径

:CopyFolder

echo 拷贝目录 %1  %2

xcopy %1  %2  /D /E /Y

goto:eof 

:eof

:: 考别磁盘下的整个目录 参数:源路径 目标路径

:CopyFolder

echo 拷贝目录 %1  %2

xcopy %1  %2  /D /E /Y

goto:eof 

:eof

相关TAG标签
上一篇:jenkins 中的 svn 插件配置讲解
下一篇:Zabbix 3.4 .10 Agentd在Linux下的安装教程
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站