Упражнения с датами в 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
Что означают двойные кавычки в TSQL?
без понятия, там и двойные есть и одинарные…
меня в PHP так же бесят -> field и обращение по [«field»]. Сделали бы однотипно.
Изучай инструмент, перед его использованием
иногда эффективнее учиться по мере использования.
Если правильно помню, двойные кавычки в sql служат для выделения имен (переменных, полей, таблиц, бд и т.д), так же как и [ ].
Применяются если имя содержит недопустимые для идентификаторов символы, либо совпадает с ключевым словом.
То есть:
DAYOFYEAR (внутри DATEPART) — это часть синтаксиса, псевдопараметр,
а «DAYOFYEAR» — идентификатор (которому тут не место, да и вообще он не опредеелн)
к чему вопрос?
Знак вопроса не суслик, его не видишь — его нет. Так что скорее «к чему ответ». К «Что означают двойные кавычки в TSQL?», вестимо.
Какая разница, что они обозначают. Когда надо написать код, просто пишется код и все. Главное — результат.