我只是搞乱了SSMS图形界面并研究了“恢复”任务的选项.
@H_502_4@RESTORE DATABASE [MyDatabase] FROM DISK = N'Server_Patch\Database_name_LOGSHIPPING.BKP' WITH FILE = 1,NORECOVERY,NOUNLOAD,STATS = 5 ( and a lot of log backups for point in time )
好的,没问题,但是,我正在每天备份这个数据库.这个Database_name_LOGSHIPPING.BKP是我一个月前用于日志传送的文件的名称.
为什么当我尝试使用SSMS图形界面来恢复备份时,它指向此备份文件?我甚至没有这个文件了.
使用来自MSsqlTIPS的查询,我可以看到来自此数据库的所有备份:
@H_502_4@SELECT CONVERT(CHAR(100),SERVERPROPERTY('Servername')) AS Server,msdb.dbo.backupset.database_name,msdb.dbo.backupset.backup_start_date,msdb.dbo.backupset.backup_finish_date,msdb.dbo.backupset.expiration_date,CASE msdb..backupset.type WHEN 'D' THEN 'Database' WHEN 'L' THEN 'Log' END AS backup_type,msdb.dbo.backupset.backup_size,msdb.dbo.backupmediafamily.logical_device_name,msdb.dbo.backupmediafamily.physical_device_name,msdb.dbo.backupset.name AS backupset_name,msdb.dbo.backupset.description FROM msdb.dbo.backupmediafamily INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id WHERE (CONVERT(datetime,102) >= GETDATE() - 7) and msdb..backupset.type ='D' ORDER BY msdb.dbo.backupset.database_name,msdb.dbo.backupset.backup_finish_date这可能有什么问题?我不是只使用COPY.
EDIT2:
我正在进行日常手动备份以进行测试,即使这样,sql Server也会选择不再存在的旧备份.运行RESTORE HEADERONLY时……它显然(显然)文件不存在.
编辑3:
这个GUI打印:
此数据库是从另一台服务器(相同的服务器,不同的实例)还原. Huuum ……我认为问题出在这里.
你能在第二张图片中看到“服务器”吗?它有2台服务器.我正在使用名称为GDLIC2014的名称.
剧本:
备份脚本:
@H_502_4@DECLARE @Patch varchar(1000) SELECT @Patch = (SELECT 'PATCH\FULL\DATABASE_ ' + convert(varchar(500),GetDate(),112) + '.bkp') BACKUP DATABASE DATABASE TO DISK=@Patch with compression使用MSsqlTIPS中的相同查询,我可以找到这些结果,使用它没有日期范围:
红色方块是旧实例的错误备份,蓝色方块是最后一次备份(GUI应该使用它)
编辑4:
好吧,使用此查询列出备份历史记录,我看到每个日志和完整列表都正确列出:
@H_502_4@SELECT TOP 100 s.database_name,m.physical_device_name,CAST(CAST(s.backup_size / 1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS bkSize,CAST(DATEDIFF(second,s.backup_start_date,s.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' TiMetaken,CAST(s.first_lsn AS VARCHAR(50)) AS first_lsn,CAST(s.last_lsn AS VARCHAR(50)) AS last_lsn,CASE s.[type] WHEN 'D' THEN 'Full' WHEN 'I' THEN 'Differential' WHEN 'L' THEN 'Transaction Log' END AS BackupType,s.server_name,s.recovery_model FROM msdb.dbo.backupset s INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id WHERE s.database_name = DB_NAME() -- Remove this line for all the database ORDER BY backup_start_date DESC,backup_finish_date GOEDIT5:
(我没有想法)
解决方法
备份历史记录表中的某些内容不同步,UI将进入最后一次“一致”完整备份.如果您真正感兴趣的是为什么它正在做它正在做的事情,请启动仅限于您的帐户的探查器跟踪,遍历GUI中的恢复步骤,并查看跟踪中捕获的命令,以显示UI在幕后执行的操作.这将为您提供您正在寻找的明确答案.
如果您只是想通过此操作,可以通过EXEC [msdb]清除备份历史记录.[dbo].[sp_delete_backuphistory] @ oldest_date = getdate()(根据您上次运行此时间,您可能希望清除它一次一个月),然后采取新的,等等.我怀疑这将重置GUI以使用正确的备份.
最后,另一种选择是在Wayne Sheffield之前运行this script.它可以提供有关备份链的任何问题的更多信息.在我最初发布这个答案之前,我没有遇到过这个问题,但希望将来可以帮助其他人.