【问题标题】:The database is already fully recovered. RESTORE DATABASE is terminating abnormally数据库已经完全恢复。 RESTORE DATABASE 异常终止
【发布时间】:2022-07-06 23:58:36
【问题描述】:

我最近继承了 DBA 的职责,却没有接受任何 DBA 培训。我们有一个数据库(出于安全原因省略了名称),它基本上设置为在待机模式下运行,用作辅助系统的只读数据库。这个数据库是通过我们供应商的日志传送来更新的,所以我们基本上随时都有他们数据库的最新副本。

但是,在周末,自动化流程在程序的第 5 步开始失败。我们收到错误消息“数据库已完全恢复。[SQLSTATE 42000](错误 3153)RESTORE DATABASE 异常终止。[SQLSTATE 42000](错误 3013)。步骤失败。”

我需要帮助来了解失败的原因以及如何解决它。您能提供的任何帮助将不胜感激。下面是分步分解的自动化作业的脚本。

/*  Step 1 - Map Network Drive */
BEGIN
    EXEC xp_cmdshell 'net use /persistent:no';
    
    EXEC xp_cmdshell 'net use * /d /Y';
    
    EXEC xp_cmdshell 'net use y: \\<FtpServer>\<folder> /user:<UserName> "<Password>"';
END

/*  Step 2 - MOVE Files from network share to working folder  */
BEGIN
    EXEC xp_cmdshell  'if exist y:\*.trn move y:\*.trn y:\working';
END

/*  Step 3 - Kill any exiting connections to the database  */
BEGIN
    USE [master];
    
    DECLARE @kill varchar(8000) = '';  
    
    SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), session_id) + ';'  
    FROM sys.dm_exec_sessions
    WHERE database_id  = db_id('<DatabaseName>')
    
    EXEC(@kill);
END

/*  Step 4 - Restore Transaction Logs  */
BEGIN
    EXEC dbo.sp_DatabaseRestore 
             @Database = '<DatabaseName>', 
             @BackupPathFull = 'G:\Base Backup\TWHSQL2014FCluster$TWHSQL2014F_<DatabaseName>_FULL_20210305_213505\', 
             @BackupPathLog = 'y:\working\', 
             @RestoreDatabaseName = '<DatabaseName>', 
             @ContinueLogs = 1, 
             @RunRecovery = 0;
END

/*  Step 5 - Change DB to STANDBY mode  */
BEGIN
    Restore Database [<DatabaseName>] With Standby = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Backup\<DatabaseName>_RollBackUndo.bak'
END

/*  Step 6 - MOVE Applied Logs to archive  */
BEGIN
    EXEC xp_cmdshell  'move y:\working\*.* y:\archived';
END

/*  Step 7 - Archive Undo File  */
BEGIN
    EXEC xp_cmdshell  'if exist "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Backup\*.bak" copy "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Backup\*.bak" "G:\LogShipping Undo File" /y';
END

【问题讨论】:

    标签: tsql database-restore log-shipping


    【解决方案1】:

    这个问题已经解决了。问题的原因是日志文件没有恢复,但确实被移动到存档文件夹,因此我们试图在恢复过程中跳过日志文件。尽管如此,我还是希望错误消息指出类似于日志文件没有正确的 LSN 值或其他表明缺少日志的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 2020-08-12
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多