如何每天备份,每天生成一个日期备份文件?(參考貼)
2008-12-31 01:52
507 查看
參考: http://topic.csdn.net/t/20031107/12/2437218.html
直接方法:
DECLARE @myBak VARCHAR(4000)
DECLARE @mydbname VARCHAR(4000)
SET @mydbname = 'SKS_20060323'
SET @myBak = 'D:\Projects.Database\BACKUP\'
+ @mydbname
+ '_'
+ CONVERT(CHAR(8),Getdate(),112)
+ '_'
+ REPLACE(CONVERT(CHAR(8),Getdate(),108),':','')
+ '.bak'
PRINT @myBak
BACKUP database @mydbname to disk=@myBak with init
間接方法,要建立存儲過程先:
--创建备份的存储过程
/*--备份数据库,并按日期生成备份目录
--邹建 2003.11--*/
/*--调用示例
--备份当前数据库
exec p_backupdb
--*/
/*--备份数据库,并按日期生成备份目录
--邹建 2003.11--*/
/*--调用示例
--备份当前数据库
exec p_backupdb
--*/
IF EXISTS (SELECT *
FROM dbo.sysobjects
WHERE id = Object_id(N'[dbo].[p_backupdb]')
AND Objectproperty(id,N'IsProcedure') = 1)
DROP procedure [dbo].[p_backupdb]
GO
CREATE PROC P_backupdb
@dbname SYSNAME = '', --要备份的数据库名称,不指定则备份当前数据库
@bkfname NVARCHAR(260) = '', --备份文件名,文件名中可以用\DBNAME\代表数据库名,\DATE\代表日期,\TIME\代表时间
@bkpath NVARCHAR(260) = 'D:\Projects.Database\BACKUP\' --备份文件的存放目录,在该目录下创建每天备份的目录
AS
DECLARE @sql VARCHAR(8000)
IF Isnull(@dbname,'') = ''
SET @dbname = Db_name()
IF RIGHT(@bkpath,1) <> '\'
SET @bkpath = @bkpath
+ '\'
--set @bkpath=@bkpath+convert(varchar,getdate(),112)+'\'
SET @bkpath = @bkpath
+ '\'
/*
--创建目录
set @sql='md '+@bkpath
exec master..xp_cmdshell @sql,no_output
*/
--备份处理
IF Isnull(@bkfname,'') = ''
SET @bkfname = '\DBNAME\_\DATE\_\TIME\.BAK'
SET @bkfname = REPLACE(REPLACE(REPLACE(@bkfname,'\DBNAME\',@dbname),'\DATE\',
CONVERT(VARCHAR,Getdate(),112)),'\TIME\',
REPLACE(CONVERT(VARCHAR,Getdate(),108),':',''))
SET @sql = 'backup database '
+ @dbname
+ ' to disk='''
+ @bkpath
+ @bkfname
+ ''''
EXEC( @sql)
GO
再運行:
exec p_backupdb
@dbname='TjCar_20080916',
@bkfname='TjCar_20080916_20081233.bak',
@bkpath='D:\Projects.Database\BACKUP'
或者無參數運行:
exec p_backupdb
就可以了.
直接方法:
DECLARE @myBak VARCHAR(4000)
DECLARE @mydbname VARCHAR(4000)
SET @mydbname = 'SKS_20060323'
SET @myBak = 'D:\Projects.Database\BACKUP\'
+ @mydbname
+ '_'
+ CONVERT(CHAR(8),Getdate(),112)
+ '_'
+ REPLACE(CONVERT(CHAR(8),Getdate(),108),':','')
+ '.bak'
PRINT @myBak
BACKUP database @mydbname to disk=@myBak with init
間接方法,要建立存儲過程先:
--创建备份的存储过程
/*--备份数据库,并按日期生成备份目录
--邹建 2003.11--*/
/*--调用示例
--备份当前数据库
exec p_backupdb
--*/
/*--备份数据库,并按日期生成备份目录
--邹建 2003.11--*/
/*--调用示例
--备份当前数据库
exec p_backupdb
--*/
IF EXISTS (SELECT *
FROM dbo.sysobjects
WHERE id = Object_id(N'[dbo].[p_backupdb]')
AND Objectproperty(id,N'IsProcedure') = 1)
DROP procedure [dbo].[p_backupdb]
GO
CREATE PROC P_backupdb
@dbname SYSNAME = '', --要备份的数据库名称,不指定则备份当前数据库
@bkfname NVARCHAR(260) = '', --备份文件名,文件名中可以用\DBNAME\代表数据库名,\DATE\代表日期,\TIME\代表时间
@bkpath NVARCHAR(260) = 'D:\Projects.Database\BACKUP\' --备份文件的存放目录,在该目录下创建每天备份的目录
AS
DECLARE @sql VARCHAR(8000)
IF Isnull(@dbname,'') = ''
SET @dbname = Db_name()
IF RIGHT(@bkpath,1) <> '\'
SET @bkpath = @bkpath
+ '\'
--set @bkpath=@bkpath+convert(varchar,getdate(),112)+'\'
SET @bkpath = @bkpath
+ '\'
/*
--创建目录
set @sql='md '+@bkpath
exec master..xp_cmdshell @sql,no_output
*/
--备份处理
IF Isnull(@bkfname,'') = ''
SET @bkfname = '\DBNAME\_\DATE\_\TIME\.BAK'
SET @bkfname = REPLACE(REPLACE(REPLACE(@bkfname,'\DBNAME\',@dbname),'\DATE\',
CONVERT(VARCHAR,Getdate(),112)),'\TIME\',
REPLACE(CONVERT(VARCHAR,Getdate(),108),':',''))
SET @sql = 'backup database '
+ @dbname
+ ' to disk='''
+ @bkpath
+ @bkfname
+ ''''
EXEC( @sql)
GO
再運行:
exec p_backupdb
@dbname='TjCar_20080916',
@bkfname='TjCar_20080916_20081233.bak',
@bkpath='D:\Projects.Database\BACKUP'
或者無參數運行:
exec p_backupdb
就可以了.
相关文章推荐
- 请问:如何实现文件日志功能?要求每天换一个文件。文件名以日期区分
- 批处理 —— 每天生成一个以日期命名的文件(Win XP)
- 用myeclipse如何将java程序生成一个.exe可运行文件?
- Android日志服务例子,将日志记录在文件中并每天生成一个日志文件
- 每天学点linux--(用shell实现将一个文件夹下面的所有文件拷贝到另一个文件夹下/shell下如何重命名一个文件)
- 每天生成自动生成一个日志文件,文件名以每天的时间结尾
- 如何去除editplus自动生成.bak备份文件的设置
- java中如何使用asm动态的生成或修改一个class文件以及asm的架构思想
- 用myeclipse如何将java程序生成一个.exe可运行文件?
- log4 配置日期为滚动类型(每天产生一个日志文件)
- Android日志服务例子,将日志记录在文件中并每天生成一个日志文件
- Tomcat catalina-deamon.out 日志切割 每天生成一个文件
- 如何让一个动态链接库文件debug和release编译的时候生成不同的文件名
- log4j配置每天生成一个日志文件
- 如何配置log4j每天产生日志,并且当天日志大于10M时自动生成另一个文件
- 浅谈一个程序如何生成一个可执行文件
- 添加一个文件夹及一些文件如何使用git生成patch
- 【原创】如何去除掉 UltraEdit 自动生成的 .bak 备份文件
- 用当前日期生成一个文件