Найдите последнюю резервную копию с помощью SMO

StackOverflow https://stackoverflow.com/questions/518105

  •  21-08-2019
  •  | 
  •  

Вопрос

Кто-нибудь знает, как найти самую последнюю резервную копию базы данных с помощью SMO?

Это было полезно?

Решение

Время резервного копирования хранится в таблице msdb.dbo.backupset.Вот процедура, которая принимает открытое SqlConnection, databasename и флаг, указывающий, хотите ли вы создавать полные резервные копии или любые резервные копии, и возвращает время последней резервной копии.

Обратите внимание, что эта таблица иногда обрабатывается, поэтому она может указывать на отсутствие резервных копий, если она была обработана.

   //----------------------------------------------------------------------------------------
    // 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;
}

Другие советы

Это невозможно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top