首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分离DB出现在备份历史记录中。

分离DB出现在备份历史记录中。
EN

Database Administration用户
提问于 2016-02-05 07:35:14
回答 2查看 398关注 0票数 2

我找到了一个脚本来显示过去24小时内没有备份的数据库:检索服务器数据库备份历史记录且不进行备份的脚本

代码语言:javascript
复制
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。为什么这些东西会出现?

EN

回答 2

Database Administration用户

发布于 2016-02-05 09:01:04

当您从Management的现代版本中使用Delete数据库时,它会询问您是否要删除MSDB中此数据库的备份历史记录。在查询中显示已删除数据库的原因仅仅是因为MSDB中存在备份历史记录。

我调整了您的查询,方法是将back颠倒连接到sysdatabase,因此它排除了在运行查询时不存在的数据库。

代码语言:javascript
复制
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  
票数 2
EN

Database Administration用户

发布于 2016-02-05 09:23:45

我不记得了。有没有办法找出。

当您分离数据库时,不删除它,只需从Server实例中删除它。如果您没有删除文件,mdf和ldf文件将出现在以前所在的位置。将数据库从Server实例中删除,但将数据库保留在其数据文件和事务日志文件中。这个链接有代码,可以用来查找没有附加到Server的数据库。或者,您只需转到windows功能并搜索*.mdf,如果可以看到所列出的数据库名称,它就会被分离。

结果显示不存在日志程序的DB。这些是我前一段时间删除/分离的DB。为什么这些东西会出现?

使用SSMS删除/删除数据库时,选择Delete backup and restore history时,Server将删除该数据库的备份历史记录。在内部,它将运行一个名为服务提供商_删除_数据库_备份历史的系统存储过程,这个存储过程将从系统表中删除有关指定数据库的备份信息。

现在,如果仍然看到这些信息,则可以执行存储过程并删除与此特定数据库相关的备份信息。例如,下面的命令将删除以下信息

代码语言:javascript
复制
sp_delete_database_backuphistory  'database_name'
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/128374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档