sql存储过程----备份数据库

本文介绍了一个SQL Server数据库备份的存储过程,支持全备、差异备份及事务日志备份。该过程根据备份类型设置文件名和路径,并执行相应的备份命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1CREATE procedure dbo.usp_backup_database
 2
 3@p_dbname varchar(50),--备份数据库名称
 4@p_type varchar(50),--备份类型,fullorlog
 5@filename varchar(8000)='' OUTPUT
 6
 7as
 8
 9SET NOCOUNT ON
10SET DATEFIRST 1
11
12DECLARE @sql varchar(8000)
13DECLARE @datetime varchar(30)
14DECLARE @path varchar(100)
15
16SET @path = 'E:\backup\sql_data\'
17
18IF @p_type='full'
19BEGIN
20 SET @datetime = CONVERT(varchar(20),getdate(),20)
21 SET @datetime = REPLACE(@datetime,' ','_')
22 SET @datetime = 'DB_Full_'+REPLACE(@datetime,':','-')
23
24 SET @filename = @datetime+'.bak'''
25
26 SET @sql = 'BACKUP DATABASE ' + @p_dbname
27 SET @sql = @sql + ' TO DISK = N'''+@path+@p_dbname + '\'+@filename
28 SET @sql = @sql + ' WITH INIT'
29END
30
31IF @p_type='diff'
32BEGIN
33 SET @datetime = 'DB_Diff_'+CAST(DATEPART ( dw , getDate()) AS char(1))
34 SET @filename = @datetime+'.diff'''
35 SET @sql = 'BACKUP DATABASE ' + @p_dbname
36 SET @sql = @sql + ' TO DISK = N'''+@path+@p_dbname + '\'+@filename
37 SET @sql = @sql + ' WITH INIT,DIFFERENTIAL'
38END
39
40IF @p_type='log'
41BEGIN
42 SET @datetime = 'DB_Log_'+DATENAME ( hh , getdate() )
43 SET @filename = @datetime+'.log'' '
44 SET @sql = 'BACKUP LOG '+ @p_dbname
45 SET @sql = @sql + ' TO DISK = N'''+@path+@p_dbname + '\'+@filename
46 SET @sql = @sql + ' WITH INIT'
47END
48
49
50--SELECT @sql
51
52EXEC (@sql)
53
54SET @filename = REPLACE(@filename,'''','')
55GO

转载于:https://www.cnblogs.com/chenbg2001/archive/2010/01/31/1660426.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值