迩鎏鎈论坛

 找回密码
 立即注册
开启左侧

批处理简单备份SQL Server数据库

[复制链接]
发表于 2022-12-7 10:43:55 | 显示全部楼层 |阅读模式 来自 LAN
  • 批处理简单备份SQL Server数据库
    最近遇到一个很普遍的问题:客户那边的电脑老是中毒啊什么的,导致数据库丢失,所以今天花了一点时间,做了一个简单的备份工具!

    1,将以下代码复制到记事本中

    2,设置一下两个参数:DB_DOCUMENT表示原始数据库文件所在的目录,DB_DOC_BAK表示数据库需要备份到的目录

    3,然后另存为filename.bat批处理文件 ;

    ======================================================
    [AppleScript] 纯文本查看 复制代码
    @ECHO OFF
    COLOR F2
    ECHO.
    ::请设置SQL Server 数据库存放的文件夹目录
    SET DB_DOCUMENT=F:\DataBase_1\*.*
    ::请设置SQL Server 数据库备份的文件夹目录
    SET DB_DOC_BAK=F:\DB_BAK\
    ECHO...
    ECHO --- 停止SQL Server服务
    NET STOP MSSQLSERVER
    ECHO --- 拷贝数据库文件到备份目录
    XCOPY %DB_DOCUMENT% %DB_DOC_BAK% /S /E /Y
    ECHO ...
    ECHO --- 启动SQL Server服务
    NET START MSSQLSERVER
    EXIT

    ======================================================

    4,运行机制:
    a.手动运行该批处理文件即可实现数据库文件的备份;
    b.如果需要自动备份,比如电脑开机时备份或者定时备份等等,可以通过添加任务来实现:
      控制面板 -> 任务计划 -> 添加任务计划 -> 选择该批处理文件 -> 设置执行时间 -> OK !



迩鎏鎈论坛 - 版权声明 1、在发表言论时,请遵守当地法律法规。主题所有言论纯属个人意见,与本站立场无关。
2、本站所有主题由作者发表,作者享有帖子相关版权,其他单位或个人使用、转载或引用本文时必须征得作者同意并注明来源于迩鎏鎈论坛
3、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。
4、帖子不遵守当地法律法规、广告、人身攻击等情况时,迩鎏鎈论坛管理人员有权不事先通知发贴者而删除本文。
 楼主| 发表于 2022-12-7 10:46:45 | 显示全部楼层 来自 LAN
[AppleScript] 纯文本查看 复制代码
批处理备份SQL Server(原创)
set SQLCMD=C:\Program Files\Microsoft SQL Server\90\Tools\Binn\
set PATH=%SQLCMD%;%PATH%
set BAKPATH=D:\test\
set DBNAME=test
REM set DATES=%date:~0,4%%date:~5,2%%date:~8,2%
set DATES=%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%
set HOST_NAME=HRCOMP
set DBUSER=HR
SQLCMD.exe -H %HOST_NAME% -U %DBUSER% -P 1234 -d master -Q "BACKUP DATABASE %DBNAME% to disk='%BAKPATH%%DBNAME%_%DATES%.bak'"


============简写=============
set SQLCMD=C:\Program Files\Microsoft SQL Server\90\Tools\Binn\
set PATH=%SQLCMD%;%PATH%
set BAKPATH=D:\test\
set DBNAME=test
REM set DATES=%date:~0,4%%date:~5,2%%date:~8,2%
set DATES=%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%
SQLCMD.exe  -d master -Q "BACKUP DATABASE %DBNAME% to disk='%BAKPATH%%DBNAME%_%DATES%.bak'"

===========兼容版===========
set BAKPATH=D:\test\
set DBNAME=test
REM set DATES=%date:~0,4%%date:~5,2%%date:~8,2%
set DATES=%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%
OSQL.exe  -E -d master -Q "BACKUP DATABASE %DBNAME% to disk='%BAKPATH%%DBNAME%_%DATES%.bak'"

==========win2000 and sql server 2000=======
set BAKPATH=D:\HR_db20110214bak\
set DBNAME=test
REM set DATES=%date:~0,4%%date:~5,2%%date:~8,2%
set DADA=%date:-=%
set TITI=%time::=%
set DATES=%dada:~4,14%_%titi:~0,6%
OSQL.exe  -E -d master -Q "BACKUP DATABASE %DBNAME% to disk='%BAKPATH%%DBNAME%_%DATES%.bak'"

回复

使用道具 举报

 楼主| 发表于 2022-12-7 10:48:43 | 显示全部楼层 来自 LAN
SQL Server 自动备份数据库并压缩的批处理脚本用法

这篇文章主要为大家详细介绍了SQL Server 自动备份数据库并压缩的批处理脚本用法,具有一定的参考价值,可以用来参考一下。


感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!

1. set bakupfolder=F:\backup\
备份文件存放于目录F:\backup\ (此目录需要事先建好)
2. 默认每个数据库放置到bakupfolder下的同名的子目录(脚本自动创建)中;设置lay_in_subfolder=0后,将直接放置到bakupfolder
3. 备份文件名中自动添加备份时的时间字符串,不用担心备份目录下名字重复,也便于管理。
4. call :backupone foo
foo是需要备份的数据库,需要备份其它数据库,按同样的方式一行写一条即可
5. 命令行驱动备份操作:sqlcmd -U sa -P “sa” -S localhost -Q “xxx”
这里连接数据库的用户名密码都是sa,请改成你的实际用户名密码。mssql密码中如果有一些特殊字符,可能报错,所以加上双引号。如果密码简单,不加也可以;不过sa密码,一般都是很变态的吧~~

代码如下:

[AppleScript] 纯文本查看 复制代码
@ECHO ON 
set d=%date:~0,10% 
set d=%d:-=% 
set t=%time:~0,8% 
set t=%t::=% 
set stamp=%p%%d%%t% 
set bakupfolder=F:\backup\ 
rem 1按子目录保存备份文件;0不按 
set lay_in_subfolder=1 
call :backupone foo 
call :backupone foo2 
call :backupone foo3 
call :backupone foo4 
goto :EOF 
@ECHO OFF 
:backupone 
setlocal 
echo %1 
set dbname=%1 
if not exist %bakupfolder%%dbname% mkdir %bakupfolder%%dbname% 
if %lay_in_subfolder%==1 ( 
set subfolder=%dbname%\ 
)else set subfolder= 
rem echo %bakupfolder%%subfolder%%dbname%%stamp%.bak 
sqlcmd -U sa -P "sa" -S localhost -Q "backup database %dbname% to disk='%bakupfolder%%subfolder%%dbname%%stamp%.bak'" 
"C:\Program Files\WinRAR\RAR.exe" a -ep1 -r -o+ -m5 -s -df "%bakupfolder%%subfolder%%dbname%%stamp%".rar "%bakupfolder%%subfolder%%dbname%%stamp%.bak" 
endlocal&goto :EOF 



回复

使用道具 举报

 楼主| 发表于 2022-12-7 10:54:42 | 显示全部楼层 来自 LAN
近日由于工作原因,需要下班前对数据库进行每日备份操作(必须将数据库备份到指定目录),仔细一想虽然sql数据库的备份不难,但是每天这样做也太麻烦了,想想能不能用简单的方法完成这个任务呢?虽然我个人本身对编程没什么兴趣更谈不上水平了,但是修改两个批处理还是没问题的,在百度2天后(我承认我比较笨哈),终于找到了批处理备份sql数据库的答案!经过简单的修改已经可以正式使用啦!下面贴出批处理执行sql语句的源码,当然只要能执行sql语句那么备份也就不是问题了吧?哈哈……

建议将这个批处理文件放置在安装有数据库的服务器上,或者至少要安装在装有sql客户端的主机上!本次使用环境为安装于win2003 + sql2000

要用批处理完成对数据库的操作需要两个条件:

你想要的可执行的sql语句(数据库的备份也可通过sql语句来实现)
连接sql数据库并执行sql语句的程序接口(本例是通过isql.exe这个应用程序来实现的,其他的osql什么的应该也可以吧?我没试过)
备份数据库的sql语句可以用记事本编辑然后另存为mybackup.sql
[SQL] 纯文本查看 复制代码
DECLARE @name varchar(50)
DECLARE @datetime char(14)
DECLARE @path varchar(255)
DECLARE @bakfile varchar(255)
set @name='testdb'    --修改为你要备份的数据库名字testdb
set @datetime=CONVERT(char(8),getdate(),112) + REPLACE(CONVERT(char(8),getdate(),108),':','')
set @path='d:\Every_data_backup'  --数据库备份的目的文件夹
set @bakfile=@path+'\'+'Bak_'+@datetime+'_'+ @name
-- 执行完毕后数据库备份名字命名形式--> 'D:\Every_data_backup\Bak_20141120204839_testdb'
backup database @name to disk=@bakfile with name=@name
go


下面是批处理源码,请另存为backup.bat
[AppleScript] 纯文本查看 复制代码
@echo off
set path=%path%;C:\Program Files\Microsoft SQL Server\80\Tools\Binn
echo. path是指定isql.exe位置的,如果是sql2000以上版本好像没有该文件
echo. 可以下一个isql.exe到system32文件夹里面看能不能用

isql.exe -S 192.168.1.25 -U sa -P  -i mybackup.sql
echo. 以上效果是连接到192.168.1.25服务器上的sql数据库 用户名是sa密码为空,
echo. 然后执行mybackup.sql语句
echo. 在网上另外找的一个使用osql的例子,没测试大家可借鉴下:
echo. osql -S"127.0.0.1"  -U"sa" -P"123456" -d"testdb" -i"%CD%/mybackup.sql" 
echo. -U数据库连接用户名   -P数据库用户密码

echo .
echo . 数据库备份完成
echo .
echo .

rem shutdown.exe -s -t 0
rem pause

将mybackup.sql与 backup.bat内容按自己需求更该后放置在同一个文件夹中,执行backup.bat就可以完成备份操作了。备份过程中会弹出黑框,只要不是明显的报错显示就没问题了,等几分钟数据库就可以备份完成了。数据库越大需要的时间就越长!

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/批处理执行sql语句备份数据库/
回复

使用道具 举报

 楼主| 发表于 2023-2-10 07:42:59 | 显示全部楼层 来自 中国湖南长沙
该脚本需要WINrar配合打包
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迩鎏鎈论坛 ( 闽ICP备19021048号 )|站点地图

GMT+8, 2025-8-28 20:46 , Processed in 0.121875 second(s), 25 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表