帮助中心 >  技术知识库 >  数据库 >  数据库管理 >  SQL Server 批量完整备份 实现方式一:使用游标

SQL Server 批量完整备份 实现方式一:使用游标

2016-09-06 18:06:48 22511

SQL Server 批量完整备份 实现方式一:使用游标


执行下面的SQL脚本就可以备份当前数据库实例的所有数据库(除了系统数据库);

-- =============================================
-- Create date: <2015/12/03>
-- Description: <批量备份数据库>
-- =============================================
DECLARE
      @FileNameVARchar(200),
      @CurrentTimeVARchar(50),
      @DBNameVARchar(100),
      @SQL VARchar(1000)
 
SET @CurrentTime = CONVERT(char(8),GETDATE(),112) + CAST(DATEPART(hh, GETDATE()) AS VARCHAR) + CAST(DATEPART(mi, GETDATE()) AS VARCHAR)
 
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
    --Execute Backup
    SET @FileName = 'E:DBBackup' + @DBName + '_' + @CurrentTime
    SET @SQL = 'BACKUP DATABASE ['+ @DBName +'] TO DISK = ''' + @FileName + '.bak' +
     ''' WITH NOINIT, NOUNLOAD, NAME = N''' + @DBName + '_backup'', NOSKIP, STATS = 10, NOFORMAT'
    EXEC(@SQL)
 
    --Get Next DataBase
    FETCH NEXT FROM CurDBName INTO @DBName
END
 
CLOSE CurDBName
DEALLOCATE CurDBName

执行完上面的SQL脚本,会在E:DBBackup的目录下生成似下图的备份文件:


1.jpg

提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: