MSFT SQL Server - backup database mssql server

Ответить
 • Просмотры: 3
Аватара пользователя
lcnet

MSFT SQL Server - backup database mssql server

Сообщение lcnet »

Приветствую!

Требуется сделать задание для агента.

Само задание есть, но его нужно немного доработать.

А именно, нужно чтобы в имени файла была полная дата, так как это делает management studio.



Как переделать этот скрипт?



Код:

Код: Выделить всё

declare @pathBackup as varchar(50)
set @pathBackup =  N'X:\BACKUPS\MyDB_' + REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '.bak'
BACKUP DATABASE [MyDB] TO  DISK = @pathBackup
WITH COMPRESSION, NOFORMAT, INIT, NAME = N'Полная База данных Резервное копирование', SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM

Из синтаксиса понятно, что первая часть с датой идет через тире, а время через двоеточие, которое заменяется на тире.

Как сделать, чтобы были подчеркивания?
Аватара пользователя
lcnet

Re: MSFT SQL Server - backup database mssql server

Сообщение lcnet »

Разобрался, почти...

Добился такого результата



MyDB_yyyy_MM_dd_HHmmss.bak



Как к этому добавить еще 7 знаков (миллисекунды, кажется), чтобы получился формат вида MyDB_yyyy_MM_dd_HHmmss_ххххххх.bak?







Код:

Код: Выделить всё

declare @pathBackup as varchar(50)
declare @full_path as varchar(50)
declare @x_path as varchar(50)
set @x_path = N'X:\BACKUPS\'
set @pathBackup =  N'MyDB_' + convert(nvarchar(20),GetDate(),120)
select @pathBackup = REPLACE(@pathBackup,':','')
select @pathBackup = REPLACE(@pathBackup,'-','_')
select @pathBackup = REPLACE(@pathBackup,' ','_')
set @full_path = @x_path + @pathBackup + '.bak'
BACKUP DATABASE [MyDB] TO  DISK = @full_path
WITH COMPRESSION, NOFORMAT, INIT, NAME = N'Полная База данных Резервное копирование', SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM



Может в T-SQL есть аналог команды PowerShell



Get-Date -Format 'yyyy_MM_dd_HHmmss_fffffff'

или



(get-date).tosrting('yyyy_MM_dd_HHmmss_fffffff')
Аватара пользователя
lcnet

Re: MSFT SQL Server - backup database mssql server

Сообщение lcnet »

Сделал, может кому пригодиться...





Код:

Код: Выделить всё

EXECUTE master.dbo.xp_create_subdir N'X:\Backups\MyDB'
GO
declare @pathBackup as varchar(100)
declare @full_path as varchar(100)
declare @x_path as varchar(100)
declare @date as varchar(100)
set @date = SYSDATETIME()
set @x_path = N'X:\BACKUPS\MyDB\'
set @pathBackup =  N'MyDB_backup_' + @date
select @pathBackup = REPLACE(@pathBackup,':','')
select @pathBackup = REPLACE(@pathBackup,'-','_')
select @pathBackup = REPLACE(@pathBackup,' ','_')
select @pathBackup = REPLACE(@pathBackup,'.','_')
set @full_path = @x_path + @pathBackup + '.bak'
BACKUP DATABASE [MyDB] TO  DISK = @full_path
WITH COMPRESSION, NOFORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM
Аватара пользователя
lcnet

Re: MSFT SQL Server - backup database mssql server

Сообщение lcnet »

А вот, от добрых людей, сильно упрощенное ))





Код:

Код: Выделить всё

declare @path varchar(100) = 'X:\BACKUPS\MyDB\MyDB_backup_' + format(getdate(), 'yyyy\_MM\_dd\_HH\_mm\_ss\_fff') + '.bak'
BACKUP DATABASE [MyDB] TO  DISK = @path
WITH COMPRESSION, NOFORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM
Ответить

Вернуться в «Программирование и базы данных»