SQL Server .BAK создание маски по умолчанию - PullRequest
0 голосов
/ 14 декабря 2011

В настоящее время, когда SQL-сервер создает файл .BAK (резервное копирование базы данных), он использует маску по умолчанию, например DatabaseName-YearMonthDay-Time.bak

Есть ли способ изменить это значение по умолчанию?т.е. Предположим, я просто хочу DatabaseName-YearMonthDay.bak (по умолчанию)

Спасибо.

Некоторые уточнения: я использую проект базы данных Visual Studio и проверил «Резервное копирование базы данных перед развертыванием»флаг - который автоматически генерирует файл .bak в месте резервного копирования по умолчанию (поэтому, хотя я, вероятно, мог бы сделать хранимую процедуру, мне больше нравится эта опция) - я предполагаю, что это сделать нелегко (если вообще возможно)

1 Ответ

1 голос
/ 30 октября 2018

Вместо использования графического интерфейса в SSMS для создания резервных копий используется SQL-скрипт.Если вы используете сценарий 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
...