我找到了一个脚本来显示过去24小时内没有备份的数据库:检索服务器数据库备份历史记录且不进行备份的脚本。
SELECT CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
msdb.dbo.backupset.database_name,
MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date,
DATEDIFF(hh, MAX(msdb.dbo.backupset.backup_finish_date),
GETDATE()) AS [Backup Age (Hours)]
FROM msdb.dbo.backupset
WHERE msdb.dbo.backupset.type = 'D'
GROUP BY msdb.dbo.backupset.database_name
HAVING
(MAX(msdb.dbo.backupset.backup_finish_date) < DATEADD(hh, - 24, GETDATE()))
UNION
SELECT CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
master.dbo.sysdatabases.NAME AS database_name,
NULL AS [Last Data Backup Date],
9999 AS [Backup Age (Hours)]
FROM
master.dbo.sysdatabases LEFT JOIN msdb.dbo.backupset
ON master.dbo.sysdatabases.name = msdb.dbo.backupset.database_name
WHERE msdb.dbo.backupset.database_name IS NULL
AND master.dbo.sysdatabases.name <> 'tempdb'
ORDER BY
msdb.dbo.backupset.database_name 结果显示不存在日志程序的DB。这些是我前一段时间删除/分离的DB。为什么这些东西会出现?

发布于 2016-02-05 09:01:04
当您从Management的现代版本中使用Delete数据库时,它会询问您是否要删除MSDB中此数据库的备份历史记录。在查询中显示已删除数据库的原因仅仅是因为MSDB中存在备份历史记录。
我调整了您的查询,方法是将back颠倒连接到sysdatabase,因此它排除了在运行查询时不存在的数据库。
SELECT CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
msdb.dbo.backupset.database_name,
MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date,
DATEDIFF(hh, MAX(msdb.dbo.backupset.backup_finish_date),
GETDATE()) AS [Backup Age (Hours)]
FROM msdb.dbo.backupset
inner join master.dbo.sysdatabases
on msdb.dbo.backupset.database_name=master.dbo.sysdatabases.name
WHERE msdb.dbo.backupset.type = 'D'
GROUP BY msdb.dbo.backupset.database_name
HAVING
(MAX(msdb.dbo.backupset.backup_finish_date) < DATEADD(hh, - 24, GETDATE()))
UNION
SELECT CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
master.dbo.sysdatabases.NAME AS database_name,
NULL AS [Last Data Backup Date],
9999 AS [Backup Age (Hours)]
FROM
master.dbo.sysdatabases LEFT JOIN msdb.dbo.backupset
ON master.dbo.sysdatabases.name = msdb.dbo.backupset.database_name
WHERE msdb.dbo.backupset.database_name IS NULL
AND master.dbo.sysdatabases.name <> 'tempdb'
ORDER BY
msdb.dbo.backupset.database_name 发布于 2016-02-05 09:23:45
我不记得了。有没有办法找出。
当您分离数据库时,不删除它,只需从Server实例中删除它。如果您没有删除文件,mdf和ldf文件将出现在以前所在的位置。将数据库从Server实例中删除,但将数据库保留在其数据文件和事务日志文件中。这个链接有代码,可以用来查找没有附加到Server的数据库。或者,您只需转到windows功能并搜索*.mdf,如果可以看到所列出的数据库名称,它就会被分离。
结果显示不存在日志程序的DB。这些是我前一段时间删除/分离的DB。为什么这些东西会出现?
使用SSMS删除/删除数据库时,选择Delete backup and restore history时,Server将删除该数据库的备份历史记录。在内部,它将运行一个名为服务提供商_删除_数据库_备份历史的系统存储过程,这个存储过程将从系统表中删除有关指定数据库的备份信息。
现在,如果仍然看到这些信息,则可以执行存储过程并删除与此特定数据库相关的备份信息。例如,下面的命令将删除以下信息
sp_delete_database_backuphistory 'database_name'https://dba.stackexchange.com/questions/128374
复制相似问题