代码之家  ›  专栏  ›  技术社区  ›  Sam

使用SMO查找最近的备份

  •  1
  • Sam  · 技术社区  · 17 年前

    有人知道如何使用SMO查找数据库的最新备份吗?

    2 回复  |  直到 17 年前
        1
  •  2
  •   Marcus Erickson    17 年前

    备份时间存储在msdb.dbo.backupund表中。这是一个例程,它接受一个打开的SQL连接、数据库名称和一个标志,该标志指示您是想要完整备份还是任何备份,并返回上次备份的时间。

    请注意,此表有时会被整理,因此如果已经整理,则可能表示没有备份。

       //----------------------------------------------------------------------------------------
        // Function: GetLastBackupTime
        //
        // Input
        //    sqlConnection          - An open SQLConnection to the target SQL Server
        //    DatabaseName           - Name of the database which you are interested in
        //    fullDatabaseBackupOnly - Do you want only the time of the last full backup
        //
        // Output
        //    DateTime               - DateTime.MinValue indicates no backup exists
        //                             otherwise it returns the last backup time
        //---------------------------------------------------------------------------------------
    
    DateTime GetLastBackupTime( SqlConnection sqlConnection, 
                                string        databaseName, 
                                bool          fullDatabaseBackupOnly )
    {
        DateTime lastBackupTime = DateTime.MinValue;  
    
        string sqlTemplate = "SELECT TOP 1 backup_finish_date " +
                             "FROM msdb.dbo.backupset " + 
                             "WHERE database_name='{0}' {1} "
                             "ORDER BY backup_finish_date DESC";
    
        string sql = String.Format( sqlTemplate,
                                    databaseName,
                                    (fullDatabaseBackupOnly ) ? " AND type='D' " : "" );
    
        // open connection
        using (SqlCommand cmd = new SqlCommand(sql, sqlConnection, 
        {
           object retValue = _Command.ExecuteScalar();
    
           if ( retValue != null ) lastBackupTime = (DateTime)retValue;
        } 
    
        return lastBackupTime;
    }
    
        2
  •  0
  •   Sam    17 年前

    这是不可能的。