如何通过日期每天生动生成备份的数据名

geopower 2003-10-16 02:54:26
关于设置方法,请详细说明.
特别是数据库名那方面要如何写.

我想生成如:ffx_U0020031016200.bak这样的备份文件,想让名称每天自动在备份是更换文件名.
...全文
55 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2003-10-16
  • 打赏
  • 举报
回复
简单一点说,就是创建一个每天执行的作业.

ffx_U0020031016200.bak

--创建备份当前数据库的存储过程
create proc p_backupdb_log
as
declare @sql varchar(8000)
--备份数据库
set @sql='backup log '+db_name()+' to disk=''c:\ffx_U00'
+convert(varchar,getdate(),112)
+replace(convert(varchar(3),getdate(),108),':','')
+'.bak'''
exec(@sql)
go

--创建作业
exec sp_add_job @job_name='数据备份'

--创建作业步骤
declare @sql varchar(8000) --数据备份的命令
declare @dbname varchar(250)

select @sql='exec p_backupdb_log'
,@dbname=db_name()

exec sp_add_jobstep @job_name='数据备份',
@step_name = '数据备份处理',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql,
@retry_attempts = 5, --重试次数
@retry_interval = 5 --重试间隔

--创建调度
EXEC sp_add_jobschedule @job_name = '数据备份',
@name = '时间安排',
@freq_type = 4, --每天,8 每周,16 每月
@freq_interval = 1, --每天执行一次
@active_start_time = 17000 --下午17:00:00分执行



sdhdy 2003-10-16
  • 打赏
  • 举报
回复
--'ffx_U00'+日期+时间
select 'ffx_U00'+convert(varchar(8),getdate(),112)+replace(convert(varchar,getdate(),108),':','')
zjcxc 2003-10-16
  • 打赏
  • 举报
回复
关于数据备份/恢复,作业的建立,请参考:

http://expert.csdn.net/Expert/topic/2359/2359124.xml?temp=.8163568
zjcxc 2003-10-16
  • 打赏
  • 举报
回复
调用下面的存储过程进行备份就行了:
exec p_backupdb @bkfname='ffx_U00\DATE\.bak'


/*--备份数据库

--邹建 2003.10--*/

/*--调用示例

--备份当前数据库
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_db.bak'

--差异备份当前数据库
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_df.bak',@bktype='DF'

--备份当前数据库日志
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_log.bak',@bktype='LOG'

--*/

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='', --要备份的数据库名称,不指定则备份当前数据库
@bkpath nvarchar(260)='', --备份文件的存放目录,不指定则使用SQL默认的备份目录
@bkfname nvarchar(260)='', --备份文件名,文件名中可以用\DBNAME\代表数据库名,\DATE\代表日期,\TIME\代表时间
@bktype nvarchar(10)='DB', --备份类型:'DB'备份数据库,'DF' 差异备份,'LOG' 日志备份
@appendfile bit=1 --追加/覆盖备份文件
as
declare @sql varchar(8000)
if isnull(@dbname,'')='' set @dbname=db_name()
if isnull(@bkpath,'')='' set @bkpath=dbo.f_getdbpath(null)
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 '+case @bktype when 'LOG' then 'log ' else 'database ' end +@dbname
+' to disk='''+@bkpath+@bkfname
+''' with '+case @bktype when 'DF' then 'DIFFERENTIAL,' else '' end
+case @appendfile when 1 then 'NOINIT' else 'INIT' end
print @sql
exec(@sql)
go
zarge 2003-10-16
  • 打赏
  • 举报
回复
建一个数据库维护计划就可以了
pengdali 2003-10-16
  • 打赏
  • 举报
回复
使用类似这个过程:

declare @myTime datetime
declare @myBak varchar(50)

set @myTime=getdate()
set @myBak='e:\bk-datas\dbname'
set @myBak=@myBak+convert(char(8),@myTime,112)
set @myBak=@myBak+cast(DATEPART(hh, @myTime) as varchar(2))
set @myBak=@myBak+cast(DATEPART(mi, @myTime) as varchar(2))
set @myBak=@myBak+cast(DATEPART(ss, @myTime) as varchar(2))
set @myBak=@myBak+'.bak'
--select @myBak
backup database IISLOGS to disk=@myBak

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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