2009-02-05 4 views

Répondre

1

Les heures de sauvegarde sont stockées dans la table msdb.dbo.backupset. Voici une routine qui prend une connexion SQL ouverte, un nom de base de données et un indicateur indiquant si vous voulez des sauvegardes complètes ou des sauvegardes et renvoie l'heure de la dernière sauvegarde.

Notez que cette table est parfois nettoyée de sorte qu'elle ne peut indiquer aucune sauvegarde si elle a été nettoyée.

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

Ce n'est pas possible.

Questions connexes