sql数据库自动备份

 源主机:192.168.0.100
 目的主机:192.168.0.200
 1、映射的网络盘
@echo off
if exist z: net use z: /delete       
#如果存在已映射的网络盘则删除它
net use z: \\192.168.0.200\bak passwd /user:user\administrator
#映射网络盘,其中 \\192.168.0.200\exbak是网络路径;passwd是密码,user\administrator是用户名(如果是域环境需要带域名,工作组则需加主机名)
if exist backup.log del backup.log
ipconfig backup.log
if not exist z: (goto Fail) else (goto ok)
:Fail
if exist C:\BackupScript\BackupUF_Day.sql del C:\BackupScript\BackupUf_Day.sql
#建立SQL备份文件
echo use master;  C:\BackupScript\BackupUf_Day.sql
echo go  C:\BackupScript\BackupUf_Day.sql
echo Backup database UFDATA_003_2009 C:\BackupScript\BackupUf_Day.sql
#备份数据库UFDATA_003_2009
echo to disk='d:\backup\UFDATA_003_2009_%date:~4,4%%date:~9,2%%date:~12,2%.bak'  C:\BackupScript\BackupUf_Day.sql
#设定数据库备份路径的保存路径。其中%date:~4,4%%date:~9,2%%date:~12,2%这个参数是取当天的日期,它的意思是从data命令显示出来的数据中从第四位取起连续取四位数据做为第一部份,后面的意思相同。
 
echo with init,nounload;  C:\BackupScript\BackupUf_Day.sql
echo go  C:\BackupScript\BackupUf_Day.sql
echo use master;  C:\BackupScript\BackupUf_Day.sql
echo go  C:\BackupScript\BackupUf_Day.sql
echo Backup database UFDATA_105_2009 C:\BackupScript\BackupUf_Day.sql
echo to disk='d:\backup\UFDATA_105_2008_%date:~4,4%%date:~9,2%%date:~12,2%.bak'  C:\BackupScript\BackupUf_Day.sql
echo with init,nounload;  C:\BackupScript\BackupUf_Day.sql
echo go  C:\BackupScript\BackupUf_Day.sql
echo use master;  C:\BackupScript\BackupUf_Day.sql
echo go  C:\BackupScript\BackupUf_Day.sql
echo Backup database UFDATA_110_2009 C:\BackupScript\BackupUf_Day.sql
echo to disk='d:\backup\UFDATA_110_2009_%date:~4,4%%date:~9,2%%date:~12,2%.bak'  C:\BackupScript\BackupUf_Day.sql
echo with init,nounload;  C:\BackupScript\BackupUf_Day.sql
echo go  C:\BackupScript\BackupUf_Day.sql
echo use master;  C:\BackupScript\BackupUf_Day.sql
echo go  C:\BackupScript\BackupUf_Day.sql
echo Backup database UFDATA_306_2009 C:\BackupScript\BackupUf_Day.sql
echo to disk='d:\backup\UFDATA_306_2009_%date:~4,4%%date:~9,2%%date:~12,2%.bak'  C:\BackupScript\BackupUf_Day.sql
echo with init,nounload;  C:\BackupScript\BackupUf_Day.sql
echo go  C:\BackupScript\BackupUf_Day.sql
"C:\PROGRA~1\Microsoft SQL Server\80\Tools\Binn\OSQL.exe" -S localhost -U sa -P -i C:\BackupScript\BackupUf_Day.sql -o C:\BackupScript\UF_%date:~4,4%%date:~9,2%%date:~12,2%.log
#调用MSDE安装路径下的命令来实现备份操作,注意参数的大小写。输出备份的状态到log文件中。
if not exist z:\UF mkdir z:\UF
echo %date%:%time%Backup of UFserver DataBase  backup.log
echo Waiting......   backup.log
set /a Days=%date:~4,4%%date:~9,2%%date:~12,2%
#使用/a参数可以实现对日期数据的运算
C:\BackupScript\forfiles_20.exe -pd:\backup\ -d-0 -mUF*_2009_%days%.bak -c"cmd /c copy @FILE z:\UF\"
#forfiles_20.exe表示是win2000下版本,它使用的要求比在winxp/win2003下严格,而且两个版本的文件不能通用;还需注意参数的大小写及间隔。该语句的意思是如果d:\backup\下有今天的UF*_2008_%days%.bak文件则copy到z:\UF\。
C:\BackupScript\forfiles_20.exe -pd:\backup\ -d-7 -mUF*_2008_*.bak -c"cmd /c del @FILE"
#删除d:\backup\下超过7天的文件
C:\BackupScript\forfiles_20.exe -pz:\UF\ -d-7 -mUF*_2008_*.bak -c"cmd /c del @FILE"
#删除网络上超过7天的文件
  
ntbackup backup C:\temp\ /j "Backup of PhoneCost DataBase" /f "d:\backup\Phone%days%.bkf" /m normal
 
 
方案二:   
1、  本地数据库服务器建立定期备份作业。
2、  备份主机上建批处理文件,并在此电脑上建立任务计划,执行批处理,设置备份周期和时间。
3、批处理参考
批处理文件(打开记事本,按下面格式录入DOS命令,保存为DBBACKUP.BAT。 格式:
xcopy \\数据服务器名\数据服务器共享的备份文件文件夹\库名.* 本机硬盘\*.* /m
举例:
XCOPY \\DbaseServ\backupdata\test.* d:\databackup\*.* /m
如果备份文件夹映射了网络驱动器(如F:,数据库备份文件是test),并且本机不作保留,就这样:
XCOPY F:\test.* d:\databackup\*.* /m
DEL /Q /A:A F:\test.*
 
 
方案三:
原理:通过 FTP 服务器备份。
使用如 CuteFTP 等软件开机自动运行。关键设置好备份计划。
 
方案四
写存储过程,自动定时执行此过程,映射备份主机目标,备份
--在sql中映射一下就可以了
exec master..xp_cmdshell 'net use z: \\host\D$ "密码" /user:user\administrator'
/*--说明:
exec master..xp_cmdshell 'net use z: \\host\c$ "密码" /user:user\administrator'
z:是映射网络路径对应本机的盘符,与下面的备份对应
\\host\c$是要映射的网络路径
user\administrator   host是远程的计算机名,
administrator是登陆的用户名
密码 面指定的administrator用户的密码
--*/
--备份;with init覆盖|noinit添加
backup database 库名 to disk='E:\BACKUP.bei' with init
--COPY
exec master..xp_cmdshell 'copy E:\BACKUP.bei z:'
--删除(这句可以去掉)
--exec master..xp_cmdshell 'del E:\BACKUP.bei'
--完成后删除映射
exec master..xp_cmdshell 'net use z: /delete'
 
方案五
使用 DTS 包,使用数据复制
 
方案六
使用发布数据库,数据库镜像同步技术
 
方案七
使用操作系统自带的备份软件定时备份或其它的第三方软件
 
 
附procedure :
create procedure MY_BACKUP
--EXAMPLE: EXEC My_BACKUP
AS
declare @sql varchar(3000)
set @sql='BACKUP DATABASE [suoyida] TO  DISK = N''D:\backup\suoyida_db_'+convert(varchar(8),getdate(),112)+left(replace(convert(varchar(14),getdate(),108),':',''),4)+'.BAK''' +' WITH  NOINIT ,  NOUNLOAD ,  NAME = N''suoyida 备份'',  NOSKIP ,  STATS = 10,  NOFORMAT '
print @sql
exec(@sql)

set @sql='BACKUP DATABASE [idcard] TO  DISK = N''D:\backup\idcard_db_'+convert(varchar(8),getdate(),112)+left(replace(convert(varchar(14),getdate(),108),':',''),4)+'.BAK''' +' WITH  NOINIT ,  NOUNLOAD ,  NAME = N''idcard 备份'',  NOSKIP ,  STATS = 10,  NOFORMAT '
print @sql
exec(@sql)
GO
exec My_backup
 

你可能感兴趣的:(sql,数据库,数据库,职场,休闲)