SQL Server .BAK创建默认掩码

时间:2011-12-13 23:59:30

标签: sql-server database-backups vsdb

目前,当SQL Server创建.BAK文件(备份数据库)时,它使用默认掩码,例如 DatabaseName-YearMonthDay-Time.bak

有没有办法更改此默认值?即假设我只想要DatabaseName-YearMonthDay.bak(默认情况下)

感谢。

一些详细说明:我正在使用Visual Studio数据库项目并检查了“部署前备份数据库”标志 - 它会在默认备份位置自动生成.bak文件(因此,虽然我可以制作存储的程序,我更喜欢这个选项) - 我猜这样做(如果可能的话)并不容易

1 个答案:

答案 0 :(得分:1)

我们使用SQL脚本代替了在SSMS中使用GUI进行备份。如果使用SQL脚本,则可以完全自定义文件名。

下面是一个示例脚本,该脚本将时间,年,月,日,时,分和秒放在备份文件名中:

--Script 1: Backup specific database

-- 1. Variable declaration

DECLARE @path VARCHAR(500)
DECLARE @name VARCHAR(500)
DECLARE @pathwithname VARCHAR(500)
DECLARE @time DATETIME
DECLARE @year VARCHAR(4)
DECLARE @month VARCHAR(2)
DECLARE @day VARCHAR(2)
DECLARE @hour VARCHAR(2)
DECLARE @minute VARCHAR(2)
DECLARE @second VARCHAR(2)

-- 2. Setting the backup path

SET @path = 'E:\Backup\'

-- 3. Getting the time values

SELECT @time   = GETDATE()
SELECT @year   = (SELECT CONVERT(VARCHAR(4), DATEPART(yy, @time)))
SELECT @month  = (SELECT CONVERT(VARCHAR(2), FORMAT(DATEPART(mm,@time),'00')))
SELECT @day    = (SELECT CONVERT(VARCHAR(2), FORMAT(DATEPART(dd,@time),'00')))
SELECT @hour   = (SELECT CONVERT(VARCHAR(2), FORMAT(DATEPART(hh,@time),'00')))
SELECT @minute = (SELECT CONVERT(VARCHAR(2), FORMAT(DATEPART(mi,@time),'00')))
SELECT @second = (SELECT CONVERT(VARCHAR(2), FORMAT(DATEPART(ss,@time),'00')))

-- 4. Defining the filename format

SELECT @name ='TestDatabase' + '_' + @year + @month + @day + @hour + @minute + @second

SET @pathwithname = @path + @namE + '.bak'

--5. Executing the backup command

BACKUP DATABASE [TestDatabase] 
TO DISK = @pathwithname WITH NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, STATS = 10