-4

我正在尝试运行备份脚本,但它不会运行。我找不到错误。

BACKUP DATABASE [METROEXPRESS] TO  
DISK = N'D:\BackupTest\MCI_'+convert(varchar(8),getdate(),112)+'' WITH NOFORMAT, 
NOINIT,  NAME = N'METROEXPRESS-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, 
STATS = 10
GO

我现在得到了正确的脚本:

DECLARE @MyFileName varchar(50) SELECT @MyFileName = (SELECT 'D:\BackupTest\MCI_' + convert(varchar(8),getdate(),112) + '.bak') 备份数据库 [METROEXPRESS] 到磁盘=@我的文件名

4

1 回答 1

1

您不能对备份文件名进行任何“内联”计算。

但是,至少在 SQL Server 2012(我在其中测试过)中,您可以创建一个类型的变量NVARCHAR(200)并填充它并使用它:

DECLARE @DiskFile NVARCHAR(200)
SET @DiskFile = N'D:\Temp\MCI_' + CONVERT(NVARCHAR(8), GETDATE(), 112) + N'.bak'

BACKUP DATABASE [METROEXPRESS] TO  
DISK = @DiskFile WITH NOFORMAT, 
NOINIT,  NAME = N'METROEXPRESS-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, 
STATS = 10

我不确定这是否是 SQL Server 2012 中的一个新功能——我的印象是我在早期版本上尝试过这个并且无法让它工作(当时)——但现在它确实有效。

于 2013-04-13T07:34:53.000 回答