如何使用日期文件名保存SQL Server备份

问题描述 投票:0回答:2

您好,我可以转换以下代码,以便备份在文件名中包含日期和时间。

USE SysproCompany
GO
EXEC('BACKUP DATABASE [Company] TO  DISK = N''G:\SQLBackups\INSTANCE1\MonthEndBackup\Company\MonthEndBackup.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'
sql tsql ssms back
2个回答
0
投票

尝试一下:

EXEC('BACKUP DATABASE [Company] TO  DISK = N''G:\SQLBackups\INSTANCE1\MonthEndBackup\Company\MonthEndBackup' + CURRENT_TIMESTAMP + '.bak'' WITH NOFORMAT, COPY_ONLY,INIT,
        NAME = N''MonthEndBackup'', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
        ')

0
投票

您不需要exec开始。只需执行

BACKUP DATABASE [Company] 
TO DISK = N''G:\SQLBackups\INSTANCE1\MonthEndBackup\Company\MonthEndBackup.bak'' 
WITH NOFORMAT, COPY_ONLY,INIT,
     NAME = N''MonthEndBackup'', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

您必须自己指定文件名,路径不使用格式化字符或模式。毕竟,不同的DBA使用完全不同的文件夹和命名约定。您可以在使用变量之前计算其名称。

A far更好的选择是大多数DBA使用的一个选择,是使用Ola Hallengren's backup scripts一次为多个数据库指定设置,文件夹和文件名模式。

默认模式文件名模式是

'{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
© www.soinside.com 2019 - 2024. All rights reserved.