Sql server 当备份文件的数据库名与数据库不匹配时,获取SQL Server数据库的上次备份日期

Sql server 当备份文件的数据库名与数据库不匹配时,获取SQL Server数据库的上次备份日期,sql-server,tsql,Sql Server,Tsql,由于疏忽,我的数据库备份没有事务日志,但我每隔五天进行一次完整备份。为了对数据库的当前版本进行一些修订,我已将每个备份恢复到单独的数据库中,每个数据库的命名格式为,其中是我的数据库的名称 我需要以编程方式查找与每个数据库相关联的备份日期,而不能采用数据库名称的格式。由于(我的数据库名称)与(备份文件中的数据库名称)不匹配,我无法使用在其他几个页面上找到的查询: 选择d.名称、b.备份\u开始日期 从sys.d数据库 左外部联接msdb..反向翻转d.name=b.database\u name上

由于疏忽,我的数据库备份没有事务日志,但我每隔五天进行一次完整备份。为了对数据库的当前版本进行一些修订,我已将每个备份恢复到单独的数据库中,每个数据库的命名格式为
,其中
是我的数据库的名称

我需要以编程方式查找与每个数据库相关联的备份日期,而不能采用数据库名称的格式。由于
(我的数据库名称)与
(备份文件中的数据库名称)不匹配,我无法使用在其他几个页面上找到的查询:

选择d.名称、b.备份\u开始日期
从sys.d数据库
左外部联接msdb..反向翻转d.name=b.database\u name上的b

我发现解决方案在
msdb..restorehistory
表中

选择d.name、MAX(b.backup\u start\u date)和backup\u date
从sys.d数据库
在r.destination\u database\u name=d.name上加入msdb..restorehistory r
加入msdb..在r.backup\u set\u id=b.backup\u set\u id上反向翻转b
其中d.database_id>4——用于排除系统数据库
按d.name分组
按备份日期、d.名称订购
这将仅返回从备份还原的数据库。如果要包括所有非系统数据库,请将
JOIN
语句更改为
LEFT-OUTER-JOIN