DECLARE @name VARCHAR(50) -- 数据库名称
DECLARE @path NVARCHAR(255) -- 备份文件路径,根据实际情况修改
DECLARE @fileName NVARCHAR(255) -- 备份文件名
DECLARE @backupCommand NVARCHAR(2000) -- 备份命令
SET @path = 'C:\Backups\' -- 设置备份文件存放的基本路径
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.sys.databases
WHERE database_id > 4 AND state_desc = 'ONLINE' -- 排除系统数据库和非在线数据库
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + CONVERT(VARCHAR(8), GETDATE(), 112) + '.bak' -- 文件命名规则,可根据需要调整
SET @backupCommand = 'BACKUP DATABASE ' + @name + ' TO DISK = N''' + @fileName + ''' WITH FORMAT;'
EXEC sp_executesql @backupCommand -- 执行备份命令
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
注意事项:
- 修改
@path
变量的值为你的备份文件存放目录。 - 确保SQL Server服务账户具有向指定备份路径写入文件的权限。
- 此脚本会备份所有在线的用户数据库,不包括系统数据库(如master, model, msdb, tempdb)和处于离线状态的数据库。
- 备份文件名中包含了备份日期,方便按日期管理备份文件。
- 执行此脚本前最好在测试环境中先行验证,以防生产环境出现意外情况