SqlServer2005数据库自动备份和删除过期备份

DECLARE @strPath NVARCHAR(200)
set @strPath = convert(NVARCHAR(19),getdate(),120)
set @strPath = REPLACE(@strPath, ':' , '.')
set @strPath = 'E:/sqlbacupk/' + @strPath + '.bak'
BACKUP DATABASE [ databasename] TO DISK = @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT

 

其中E:/sqlbacupk/是备份文件存放的路径,备份文件后缀名是.bak

databasename是要备份的数据库的名字

删除过期备份

declare @dt datetime
select @dt=getdate()-1
EXECUTE master.dbo.xp_delete_file 0,N'E:/sqlback/',N'BAK',@Dt

 

在代码中尽量不要使用xp_cmdshell,查询管理器中会提示

消息 15281,级别 16,状态 1,过程 xp_cmdshell,第 1 行
SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
关于作业,正确的作业代码是可以在查询管理器中执行的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于SQL Server来说,定期清理过期数据非常重要,它有助于提高数据库性能和减少存储空间的占用。 首先,我们可以通过使用DELETE语句来删除过期数据。可以根据某个特定的日期或时间戳字段来确定数据是否过期,然后使用DELETE语句将其从表中删除。例如,使用以下查询语句可以删除过去一年内的过期数据: ``` DELETE FROM 表名 WHERE 日期字段 < DATEADD(YEAR, -1, GETDATE()) ``` 其次,我们可以使用TRUNCATE TABLE语句来清空整个表。如果数据表中的所有数据都已过期,我们可以使用TRUNCATE TABLE语句一次性删除所有数据。但是需要注意的是,TRUNCATE TABLE语句是不可回滚的操作,所以在执行之前需要谨慎考虑。 另外,我们还可以创建定期的清理作业SQL Server提供了Agent服务,可以用于创建和管理作业。我们可以创建一个计划任务,定期运行SQL脚本来清理过期数据。在创建作业时,我们可以设置定期运行的频率和时间,以及执行的SQL脚本。 此外,我们还可以使用分区表的方式来更有效地管理和清理过期数据。通过将数据按照某个字段(如日期)进行分区,我们可以在清理过期数据时,只需删除特定分区,而不是整个表。这可以提高清理的效率,并减少对其他分区的影响。 总之,通过定期清理过期数据,我们可以保持数据库的健康和性能。无论是使用DELETE语句、TRUNCATE TABLE语句、定期作业,还是分区表,选择合适的方法取决于具体的需求和情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值