Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Имя файла с датой по шаблону  [new]
keepermode
Member

Откуда:
Сообщений: 52
Добрый день! Как в sql-запросе, например,
set @filename=N'C:\backup_2019-04-01 14-53-05.bak'
написать имя файла с датой по шаблону?
Как в батнике написал бы backup_*.bak
1 апр 19, 15:53    [21849078]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36696
Команды sql-сервера не работают с шаблонами командной строки.
1 апр 19, 15:56    [21849082]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
keepermode
Member

Откуда:
Сообщений: 52
Гавриленко Сергей Алексеевич, спасибо! Жаль, и вариантов не найти обозначить имя с любой датой?
1 апр 19, 16:01    [21849089]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
declare @filename nvarchar(100) = '';
set @filename=N'C:\backup_' + CONVERT(nvarchar(20), getdate(), 120) + '.bak';
print @filename;
1 апр 19, 16:11    [21849097]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
двоеточия реплейсом замените
1 апр 19, 16:12    [21849102]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30821
keepermode
Добрый день! Как в sql-запросе, например,
set @filename=N'C:\backup_2019-04-01 14-53-05.bak'
написать имя файла с датой по шаблону?
Как в батнике написал бы backup_*.bak
Непонятен вопрос. Пишите как хотите, всё прекрасно сохранится в таблицах или в переменной.
set @filename=N'C:\backup_*.bak' 
1 апр 19, 16:35    [21849131]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
keepermode
Member

Откуда:
Сообщений: 52
Konst_One,
DECLARE @filename nvarchar(100) = '', @name nvarchar(4000);
set @filename=N'C:\backup_' + REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '.bak';
print @filename;

Результат:
C:\backup_2019-04-01 16-53-17.bak настоящее сиюминутное время запуска

Файл не найден.

А имя выгруженного бекап-файла C:\backup_2019-04-01 16-50-05.bak
1 апр 19, 17:03    [21849168]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36696
Не страдайте фигней -- возьмите имя файла из backuphistory. Или с диска прочитайте.
1 апр 19, 17:05    [21849171]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
keepermode,

вы свою полную задачу не озвучили, поэтому что-то вам советовать очень сложно. никто не понимает, какую проблему вы решаете и каким способом.
1 апр 19, 17:06    [21849172]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5162
keepermode

Результат:
C:\backup_2019-04-01 16-53-17.bak настоящее сиюминутное время запуска

Файл не найден.

А имя выгруженного бекап-файла C:\backup_2019-04-01 16-50-05.bak


в кавычках двойных нужно имя файла (или весь путь), если есть пробелы в названии
1 апр 19, 17:25    [21849200]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30821
keepermode
Файл не найден.
С чего должен быть найден файл, с именем, которое вы только что придумали (сгенерировали в коде программы)?
Что бы файл нашёлся, нужно указать его настоящее имя, а не генерить из текущей даты "по шаблону"
1 апр 19, 17:26    [21849202]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
keepermode
Member

Откуда:
Сообщений: 52
Konst_One, Полная задача автоматизировать процесс бекапа базы и проверка выгруженного файла:

Первый шаг здания - бэкап базы в файл с датой-временем
set @filename=N'C:\backup_' + REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '.bak';
BACKUP DATABASE [db] TO  DISK = @filename


Второй шаг задания - проверка выгруженного бэкапа
RESTORE VERIFYONLY FROM  DISK = @filename 


Если выгруженный файл с датой, то "файл не найден"
2 апр 19, 14:56    [21850134]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30821
keepermode
Konst_One, Полная задача автоматизировать процесс бекапа базы и проверка выгруженного файла:

Первый шаг здания - бэкап базы в файл с датой-временем
set @filename=N'C:\backup_' + REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '.bak';
BACKUP DATABASE [db] TO  DISK = @filename



Второй шаг задания - проверка выгруженного бэкапа
RESTORE VERIFYONLY FROM  DISK = @filename 



Если выгруженный файл с датой, то "файл не найден"
У вас второй шаг даже не запустится, потому что переменные, объявленные в первом шаге, во втором не видны.
2 апр 19, 15:05    [21850161]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
пробел у вас в имени файла, замените его подчёркиванием
2 апр 19, 15:10    [21850176]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
и да, шаги разные, как уже было сказано выше
2 апр 19, 15:11    [21850178]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
keepermode
Member

Откуда:
Сообщений: 52
alexeyvg,
set @filename=N'C:\backup_' + REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '.bak';

BACKUP DATABASE [db] TO DISK = @filename

set @filename=N'C:\backup_' + REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '.bak';
RESTORE VERIFYONLY FROM  DISK = @filename 


Как правильно объявить @filename, чтобы его проверить?
2 апр 19, 15:12    [21850179]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36696
keepermode,

Если вы ответы не читаете, зачем вопросы задаете?
2 апр 19, 15:12    [21850181]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
делайте имя без времени , а только дату, тогда найдётся ваш файл
2 апр 19, 15:12    [21850183]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
keepermode
Member

Откуда:
Сообщений: 52
Konst_One, как заменить? Это поможет?
2 апр 19, 15:14    [21850187]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30821
keepermode
alexeyvg,
set @filename=N'C:\backup_' + REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '.bak';


BACKUP DATABASE [db] TO DISK = @filename

set @filename=N'C:\backup_' + REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '.bak';
RESTORE VERIFYONLY FROM  DISK = @filename 



Как правильно объявить @filename, чтобы его проверить?
Вы в первом шаге формируете @filename, делаете бакап.

Потом во втором шаге формируете другой @filename, проверяете сделанный бакап.

Немудрено, что @filename в этих двух шагах могут быть разные.

Это принципиально неправильный подход.
Правильный - это использовать метаданные о сделанном бакапе, как вам написал Гавриленко Сергей Алексеевич, либо проверять бакап в первом шаге, не меняя @filename
2 апр 19, 15:23    [21850199]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30821
Konst_One
делайте имя без времени , а только дату, тогда найдётся ваш файл
Супер! А потом нужно будет сделать бакап за день 2 раза :-)

Прравильное решение совсем другое.
2 апр 19, 15:24    [21850201]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
а если нужен только один бэкап в день, то тогда в самый раз. ТС так и не обозначил свою конечную задачу
2 апр 19, 15:32    [21850214]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
Сруль.
Member

Откуда:
Сообщений: 119
Я чой-то запутался, мужик.
Если ты бэкапы, типа ищешь...
Зачем проверять, если можно, просто, найти
use master
declare @db_name varchar(100)
set @db_name='dbnane'--заменить на имя вашей базы.
SELECT 
CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
msdb.dbo.backupset.database_name, 
msdb.dbo.backupset.backup_start_date, 
msdb.dbo.backupset.backup_finish_date, 
msdb.dbo.backupset.expiration_date, 
CASE msdb..backupset.type 
WHEN 'D' THEN 'Database' 
WHEN 'L' THEN 'Log' 
END AS backup_type, 
msdb.dbo.backupset.backup_size, 
msdb.dbo.backupmediafamily.logical_device_name, 
msdb.dbo.backupmediafamily.physical_device_name, 
msdb.dbo.backupset.name AS backupset_name, 
msdb.dbo.backupset.description 
FROM msdb.dbo.backupmediafamily 
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
WHERE (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7) 
and database_name=@db_name
and charindex('\',physical_device_name) >0
ORDER BY 
msdb.dbo.backupset.database_name, 
msdb.dbo.backupset.backup_finish_date DESC
2 апр 19, 15:57    [21850273]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
keepermode
Member

Откуда:
Сообщений: 52
alexeyvg, Да, для воскресных FULL и ежедневных DIFF подойдет
convert(varchar(500),GetDate(),112)
2 апр 19, 16:08    [21850307]     Ответить | Цитировать Сообщить модератору
 Re: Имя файла с датой по шаблону  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
ухх... достаточно давно есть
SELECT FORMAT(getdate(),'yyyy-MM-dd hh-mm-ss')
2 апр 19, 16:16    [21850323]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить