Windows文件夹中使用sql脚本的最新.bak文件

时间:2019-05-17 13:52:17

标签: tsql

我需要帮助编写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作为最新文件,这是不正确的。

1 个答案:

答案 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