SQL Express:将作业备份到自动递增日期/时间?
正在尝试创建备份作业以自动增加此脚本上的备份文件名,但在语法上却无法实现。 想法是设置一个每x小时运行一次的作业,并在同一位置备份数据库。文件名必须递增,否则作业将失败(是的,我已经尝试使用msdn建议的方法来执行此操作,但不知何故,我的批处理文件不想工作)SQL Express:将作业备份到自动递增日期/时间?,sql,backup,Sql,Backup,正在尝试创建备份作业以自动增加此脚本上的备份文件名,但在语法上却无法实现。 想法是设置一个每x小时运行一次的作业,并在同一位置备份数据库。文件名必须递增,否则作业将失败(是的,我已经尝试使用msdn建议的方法来执行此操作,但不知何故,我的批处理文件不想工作) USE TESTDB; GO declare @Date DATE = GetDate() BACKUP DATABASE TESTDB TO DISK = 'D:\Test\TESTDB.Bak' WITH FORMAT,
USE TESTDB;
GO
declare @Date DATE = GetDate()
BACKUP DATABASE TESTDB
TO DISK = 'D:\Test\TESTDB.Bak'
WITH FORMAT,
MEDIANAME = 'TESTDB',
NAME = 'TESTDB'&@Date&'.BAK';
GO
作为日期使用varchar变量作为名称
declare @Date as varchar(20)
set @Date = CAST( getdate() AS DATE);
declare @Name varchar(40) = 'Backup to TESTDB at'+@Date+'.BAK'
BACKUP DATABASE 'TESTDB'TO DISK = 'D:\TEST\TESTDB.Bak'
-- use NOFORMAT for Add Backup
WITH NOFORMAT,
MEDIANAME = 'TESTDB',
NAME =@name;
go
因此,您可以更改磁盘名称以进行单独备份
declare @Date as varchar(20)
set @Date = CAST( getdate() AS DATE);
declare @disk varchar(100) = 'D:\TEST\TESTDB'+@Date+'.BAK'
declare @Name varchar(40) = 'Backup to TESTDB at'+@Date+'.BAK'
BACKUP DATABASE 'TESTDB'TO DISK = @disk
-- use FORMAT for erase Backup
WITH NOFORMAT,
MEDIANAME = 'TESTDB',
NAME =@name;
go
“&”运算符中的数据类型varchar和date不兼容。