SQL 建立数据库备份作业

复制代码
declare @name nvarchar(50)
declare @datetime char(14)
declare @path nvarchar(255)
declare @bakfile nvarchar(255)
set @name='DBNAME'
set @datetime=CONVERT(char(8),GETDATE(),112)+REPLACE(CONVERT(char(8),getdate(),108),':','')
set @path='D:\DBDataBackup'
set @bakfile=@path+''+'Bak_'+@datetime+'_'+@name+'.bak'
select @bakfile
backup database @name to disk=@bakfile with name=@name,checksum
复制代码

 

所有

复制代码
DECLARE
      @FileName VARCHAR(200),
      @CurrentTime VARCHAR(50),
      @DBName VARCHAR(100),
      @SQL VARCHAR(1000),
      @FilePath VARCHAR(100),
      @DelFilePath VARCHAR(100)
 
--SET @CurrentTime = CONVERT(CHAR(8),GETDATE(),112) + CAST(DATEPART(hh, GETDATE()) AS VARCHAR) + CAST(DATEPART(mi, GETDATE()) AS VARCHAR)
--年月日
SET @FilePath = 'D:\DB_Backup\' 
SET @CurrentTime = CONVERT(CHAR(8),GETDATE(),112)
--获取所有非系统数据库
DECLARE CurDBName CURSOR FOR 
   SELECT NAME FROM Master..SysDatabases where dbid>4
--循环备份数据库
OPEN CurDBName
FETCH NEXT FROM CurDBName INTO @DBName
WHILE @@FETCH_STATUS = 0
BEGIN
    --备份数据数据
    SET @FileName = @FilePath + @DBName + '_' + @CurrentTime
    SET @SQL = 'BACKUP DATABASE ['+ @DBName +'] TO DISK = ''' + @FileName + '.bak' +
     ''' WITH NOINIT, NOUNLOAD, NAME = N''' + @DBName + '_backup'', NOSKIP, STATS = 10, NOFORMAT'
     EXEC(@SQL)
    --删除7天以前的数据
    SET @DelFilePath='del '+@FilePath + @DBName + '_' + CONVERT(CHAR(8),GETDATE()-30,112)+'.bak'
    SET @SQL = 'EXEC master..xp_cmdshell ''' + @DelFilePath + '''';
    
     EXEC(@SQL)
    --Get Next DataBase
    FETCH NEXT FROM CurDBName INTO @DBName
END
 
CLOSE CurDBName
DEALLOCATE CurDBName
复制代码

 

posted @   小杨观世界  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示