Упражнения с датами в T-SQL для бэкапа

Попытка 1 с примером из интернета:

Попытка 2 с текущей датой:

Облагородим для применения в скрипте бэкапа:

Поправил ошибку с длиной строки:

Но скрипт не работает в Jobs, выдает ошибку:

Executed as user: NT SERVICE\SQLSERVERAGENT. Invalid parameter 1 specified for datepart. [SQLSTATE 42000] (Error 1023).  The step failed.

А ларчик просто открывался, кавычки в имени первого параметра DATEPART были лишними:

DECLARE @number_parts INT; SET @number_parts = 5;
DECLARE @arc_part_name Varchar (1024);
SET @arc_part_name  = cast (DATEPART(DAYOFYEAR, getdate()) % @number_parts as varchar);
 
DECLARE @arc_file_name AS Varchar(1024); 
SET @arc_file_name = 'C:\backup\sql\unf_backup' + @arc_part_name + '.bak';
SELECT @arc_file_name;
BACKUP DATABASE [unf] TO  DISK = @arc_file_name  WITH NOFORMAT, INIT,  SKIP, REWIND, NOUNLOAD, COMPRESSION,  STATS = 10, CHECKSUM 	

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментариев 8

  1. rzd:

    Что означают двойные кавычки в TSQL?

  2. НуфНуф:

    Если правильно помню, двойные кавычки в sql служат для выделения имен (переменных, полей, таблиц, бд и т.д), так же как и [ ].
    Применяются если имя содержит недопустимые для идентификаторов символы, либо совпадает с ключевым словом.

    То есть:
    DAYOFYEAR (внутри DATEPART) — это часть синтаксиса, псевдопараметр,

    а «DAYOFYEAR» — идентификатор (которому тут не место, да и вообще он не опредеелн)

  3. НуфНуф:

    Знак вопроса не суслик, его не видишь — его нет. Так что скорее «к чему ответ». К «Что означают двойные кавычки в TSQL?», вестимо.

    • Какая разница, что они обозначают. Когда надо написать код, просто пишется код и все. Главное — результат.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *