目前,当SQL Server创建.BAK文件(备份数据库)时,它使用默认掩码,例如 DatabaseName-YearMonthDay-Time.bak
有没有办法更改此默认值?即假设我只想要DatabaseName-YearMonthDay.bak(默认情况下)
感谢。
一些详细说明:我正在使用Visual Studio数据库项目并检查了“部署前备份数据库”标志 - 它会在默认备份位置自动生成.bak文件(因此,虽然我可以制作存储的程序,我更喜欢这个选项) - 我猜这样做(如果可能的话)并不容易
答案 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