SQL Express:将作业备份到自动递增日期/时间?

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,

正在尝试创建备份作业以自动增加此脚本上的备份文件名,但在语法上却无法实现。 想法是设置一个每x小时运行一次的作业,并在同一位置备份数据库。文件名必须递增,否则作业将失败(是的,我已经尝试使用msdn建议的方法来执行此操作,但不知何故,我的批处理文件不想工作)

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不兼容。