嗨,我可以转换以下代码,以便备份文件名中包含日期和时间吗。
USE SysproCompany
GO
EXEC('BACKUP DATABASE [Company] TO DISK = N''G:SQLBackupsINSTANCE1MonthEndBackupCompanyMonthEndBackup.bak'' WITH NOFORMAT, COPY_ONLY,INIT,
NAME = N''MonthEndBackup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
')
PRINT 'Backup of Syspro Company started'
GO
PRINT 'Backup of Syspro Company complete'
您不需要从exec开始。只需执行
BACKUP DATABASE [Company]
TO DISK = N''G:SQLBackupsINSTANCE1MonthEndBackupCompanyMonthEndBackup.bak''
WITH NOFORMAT, COPY_ONLY,INIT,
NAME = N''MonthEndBackup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
您必须自己指定文件名,路径不使用格式化字符或模式。毕竟,不同的DBA使用完全不同的文件夹和命名约定。你可以在使用变量之前计算出它的名称。
不过,大多数DBA使用的更好的选项是,使用Ola Hallengren的备份脚本一次为多个数据库指定设置、文件夹和文件名模式。
默认模式文件名模式是
'{ServerName}${InstanceName}_{DatabaseName}_{BackupType}_{Partial}_{CopyOnly}_{Year}{Month}{Day}_{Hour}{Minute}{Second}_{FileNumber}.{FileExtension}',
单个命令可用于执行多个操作,例如备份所有用户数据库和验证备份,或清理旧备份:
EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = 'C:Backup',
@BackupType = 'FULL',
@Verify = 'Y',
@Compress = 'Y',
@CheckSum = 'Y',
@CleanupTime = 24
试试这个:
EXEC('BACKUP DATABASE [Company] TO DISK = N''G:SQLBackupsINSTANCE1MonthEndBackupCompanyMonthEndBackup' + CURRENT_TIMESTAMP + '.bak'' WITH NOFORMAT, COPY_ONLY,INIT,
NAME = N''MonthEndBackup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10
')