您的位置:首页 > 其它

如何每天备份,每天生成一个日期备份文件?(參考貼)

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

就可以了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: