求写个bat文件备份sql server 2005数据库。

hmq1012 2011-12-21 04:13:00
sql server 2005 express 的数据库要求每天做数据备份,但是安装的也不完整的,不能直接做备份,想用bat写个批处理文件后,在做个计划任务,请教那个bat文件怎么写呢?
...全文
366 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hmq1012 2011-12-23
  • 打赏
  • 举报
回复
可以了,谢谢各位
hmq1012 2011-12-22
  • 打赏
  • 举报
回复
谢谢楼上几位,你们能不能留个QQ甚么的给我吗,联系一下。我有问题请教呢。
唐诗三百首 2011-12-22
  • 打赏
  • 举报
回复
-- 建批处理文件auto_backup.bat, 内容:
sqlcmd -S [服务器名] -U sa -P [密码] -i [backup.sql]

--> 此处的backup.sql就是指上一步骤建好的backup.sql

唐诗三百首 2011-12-22
  • 打赏
  • 举报
回复

-- 建文件backup.sql, 内容:
USE pcglxt
GO
declare @str varchar(100)
set @str='E:\databak\pcglxt'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.bak'
BACKUP DATABASE [pcglxt] TO DISK=@str
WITH RETAINDAYS=15,NOFORMAT,NOINIT,
NAME=N'pcglxt完整备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

-- 建批处理文件auto_backup.bat, 内容:
sqlcmd -S [服务器名] -U sa -P [密码] -i [backup.sql]

-- 建windows计划任务, 定期调用执行auto_backup.bat
hmq1012 2011-12-22
  • 打赏
  • 举报
回复
USE pcglxt
GO
declare @str varchar(100)
set @str='E:\databak\pcglxt'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.bak'
BACKUP DATABASE [pcglxt] TO DISK=@str
WITH RETAINDAYS=15,NOFORMAT,NOINIT,
NAME=N'pcglxt完整备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

这样写在sql里面,运行后会生成bak文件了,但是我不知道怎么写个bat文件让他自动去运行sql文件。。。
hmq1012 2011-12-22
  • 打赏
  • 举报
回复
--完整备份,每周一次
USE Master
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\FullBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.bak'
BACKUP DATABASE [demo] TO DISK=@str
WITH RETAINDAYS=15,NOFORMAT,NOINIT,
NAME=N'Demo完整备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

---------------------------------------------------------------------------------
这里面WITH RETAINDAYS=15,NOFORMAT,NOINIT,
NAME=N'Demo完整备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
这几句是甚么意思呢?我不是很明白


dawugui 2011-12-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 hmq1012 的回复:]
sql server 2005 express 的数据库要求每天做数据备份,但是安装的也不完整的,不能直接做备份,想用bat写个批处理文件后,在做个计划任务,请教那个bat文件怎么写呢?
[/Quote]不是写BAT,是写个定时作业去完成你的备份.
SQL Server 2005和2008定时作业的制定

http://blog.csdn.net/htl258/archive/2010/04/29/5543694.aspx

--SQL Server 2008 定时作业的制定
--1.打开【SQL Server Management Studio】,在【对象资源管理器】列表中选择【SQL Server 代理】;
--2.鼠标右击【SQL Server 代理】,选择【启动(S)】,如已启动,可以省略此步骤;
--3.展开【SQL Server 代理】列表,右击【作业】-->【新建作业】;
--3.1 在【常规】选项卡中:
-- 输入作业名称,如"My Job";
--3.2 在【步骤】选项卡中:
--3.2.1 点击【新建】,输入【步骤名称】,如“步骤1”,类型默认T-SQL脚本,也可以选择SSIS包等;
--3.2.2 在【数据库】一栏选择要作业处理的数据库,在【命令】的右边空白编辑栏输入要执行的SQL代码,

EXEC p_Name --如:执行一个P_Name的存储过程


-- 也可以点击命令下面的【打开】,打开.sql脚本;
--3.2.3 输入运行脚本后,建议点击【分析】,确保脚本语法正确,然后点击下面的【确定】按钮;
--3.3 在【计划】选项卡中:
--3.3.1 点击【新建】,输入【计划名称】,如“计划1”,计划类型默认是”重复执行”,也可以选择执行一次等;
--3.3.2 在【频率】-->【执行】处选择“每天”、“每周”或“每月”,以“每天”为例,间隔时间输入间隔几天执行一次,
-- 下面还可以选择每天一次性执行或间隔一定的时间重复执行
--3.3.3 在【持续时间】中选择计划开始执行的【起始日期】和【截止日期】,然后点击【确定】按钮;


--注意要将服务设置为自动启动,否则在重启服务器后作业就不运行了。
--启动代理服务的方法:
--开始-->运行-->输入services.msc-->找到【SQL Server 代理】的服务并双击-->【启动类型】选择“自动”-->【确定】

--至此,定时作业已创建完毕。
唐诗三百首 2011-12-21
  • 打赏
  • 举报
回复

-- 建文件backup.sql, 内容:
backup database [数据库名] to disk='[备份文件名]' with format,init

-- 建批处理文件auto_backup.bat, 内容:
sqlcmd -S [服务器名] -U sa -P [密码] -i [backup.sql]

-- 建windows计划任务, 定期调用执行auto_backup.bat
--小F-- 2011-12-21
  • 打赏
  • 举报
回复
/*******************完整备份作业*******************/
--完整备份,每周一次
USE Master
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\FullBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.bak'
BACKUP DATABASE [demo] TO DISK=@str
WITH RETAINDAYS=15,NOFORMAT,NOINIT,
NAME=N'Demo完整备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO




/*******************差异备份作业*******************/
--截断日志
USE Master
GO
BACKUP LOG Demo WITH NO_LOG
GO
--收缩日志文件
USE Demo
GO
DBCC SHRINKFILE (N'Demo_log',0,TRUNCATEONLY)
GO
--差异备份,每天一次
USE Master
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\DiffBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.diff'
BACKUP DATABASE [Demo] TO DISK=@str
WITH DIFFERENTIAL,RETAINDAYS=8,NOFORMAT,NOINIT,
NAME=N'Demo差异备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO




/******************日志备份作业*******************/
--日志备份,每小时一次
USE Demo
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\logbak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.trn'
BACKUP LOG [Demo] TO DISK=@str
WITH RETAINDAYS=3,NOFORMAT,NOINIT,
NAME=N'Demo日志备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO




--删除过期的备份文件,每天两次
declare @str varchar(100),@dir varchar(100),@fileName varchar(30)
set @dir='del D:\DBtext\jgj\DBABak\'
set @filename=left(replace(replace(replace(convert(varchar,getdate()-15,20),'-',''),' ',''),':',''),8)
set @str=@dir+'fullbak'+@filename+'*.bak'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
set @str=@dir+'diffbak'+@filename+'*.diff'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
set @str=@dir+'logbak'+@filename+'*.trn'
exec xp_cmdshell @str
--小F-- 2011-12-21
  • 打赏
  • 举报
回复
可以用备份作业。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧