попытке выбрать последнюю полную резервную копию файла из временной таблицы, используя приведенный ниже запрос:ВЫБРАТЬ Последние Full Backup File - T-SQL
CREATE TABLE #fileList (backupFile NVARCHAR(255))
SET @backupPath = '\\ServerName\SQLBACKUP\Full\'
SET @cmd = 'DIR "' + @backupPath + '"'
INSERT INTO #fileList
EXEC master.sys.xp_cmdshell @cmd
SELECT @lastFullBackup = MAX(backupFile)
FROM #fileList
WHERE backupFile LIKE '%Production_Backup%'
Однако выбор 12/31/2016 резервного копирования, а последний. Я считаю, что причина в том, что, когда данные загружаются в временную таблицу, она загружает дату как MM/DD/YYYY вместо YYYY/MM/DD, а SQL смотрит только на месяц, а не на год.
Вот как данные выглядят в таблице TEMP:
12/31/2016 01:04 AM 24,418,292,736 Production_backup_2016_12_31_000000_4880248.bak
ПРИМЕЧАНИЕ: Там только один столбец в таблице темп, поэтому я не могу преобразовать дату в формате ГГГГ/ММ/ДД.
Как получить последнюю резервную копию?
FYI-Это ссылка я ссылка: http://www.sqlideas.com/2009/07/auto-generate-sql-server-restore-script.html
Является ли ваша дата сохраненной в качестве даты или хранится в виде строки? –
Тип 'date' не имеет формата. Скорее всего, вы использовали 'varchar' вместо' date' при создании таблицы. Просто отбросьте его и перестройте с правильным типом. Хранение чисел или дат как строк является довольно уродливой ошибкой –
Я бы не использовал этот скрипт, если бы был вами. SQL Server хранит историю архивации в MSDB, нет никаких оснований перечислять содержимое папки. Проверьте, например, [эта статья] (http://blog.sqlauthority.com/2010/11/10/sql-server-get-database-backup-history-for-a-single-database/), которая показывает, как использовать таблицы резервного копирования, backupmediafamily, чтобы получить список резервных копий и найти последние –