我需要帮助编写sql脚本以从Windows文件夹中查找最新的备份文件以还原数据库。文件名就像:-
dbnm_2019_4_5_11_30_613.bak
dbnm_2019_4_18_11_32_234.bak
dbnm_2019_4_11_11_37_34.bak
...名称是使用dbnm_year_month_date_hr_min_sec格式组成的。
用于以下脚本:-
CREATE TABLE #File
( FileName SYSNAME,
Depth TINYINT,
IsFile TINYINT
);
INSERT INTO #File
(FileName, Depth, IsFile)
EXEC xp_DirTree '[file location]',1,1;
无论如何,我可以插入网络文件夹中的日期以显示备份文件的创建时间,并在该字段上进行排序以查找最新文件。
当我在select语句中使用前1名时,它向我显示2019_4_5_11_30_613.bak
作为最新文件,这是不正确的。
答案 0 :(得分:0)
无论如何,我是否可以插入网络文件夹中的日期 显示何时创建备份文件并在该字段上执行排序 查找最新文件。
仅通过计算机统一(c:d:)中的文件从SQL Server恢复数据库。
要获取备份集,请使用以下语句:
SELECT
database_name as DataBaseName,
physical_device_name as PhysicalDeviceName,
backup_start_date as BackupStartDate,
backup_finish_date as BackupFinishDate,
cast(backup_size/1024.0 as decimal(19,2)) AS BackupSizeKB,
cast(backup_size/1024.0/1024.0 as decimal(19,2)) AS BackupSizeMB,
cast(backup_size/1024.0/1024/1024.0 as decimal(19,2)) AS BackupSizeGB
FROM msdb.dbo.backupset b
JOIN msdb.dbo.backupmediafamily m ON b.media_set_id = m.media_set_id
where cast(b.backup_finish_date as date)= (cast(getdate() -1 as date))
ORDER BY backup_finish_date
请注意以下子句:WHERE和ORDER BY。
还有另一种使用Powershell从Windows文件夹中获取最后一个文件的方法。 在这里查看Keith Hill的答案:Finding modified date of a file/folder