如何每天备份,每天生成一个日期备份文件?(參考貼)
參考: 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
就可以了.