Writer Backup Schema Support

To fully implement a backup requires participation of the system's writers. Different types of supported backups are referred to as schemas and are indicated by a bitmask (or bitwise OR) of members of the VSS_BACKUP_SCHEMA enumeration. The currently supported valid schemas include the following:

  • Default Schema: Full (VSS_BS_UNDEFINED)—indicates that a writer supports a backup where all files will be backed up regardless of their last backup date. The backup history of each file can be updated by the requester, and writers supporting the VSS_BS_TIMESTAMPED enumeration value, it will store an updated time stamp with the requester. This backup scheme can be used as the basis of an incremental or differential backup.

    Restoring a full backup requires only a single backup image.

  • Copy Backup (VSS_BS_COPY)—like the VSS_BS_FULL backup schema, indicates that a writer supports a backup where all files will be backed up regardless of their last backup date. However, the backup history of each file will not be updated by either requester or writer, and this sort of backup cannot be used as the basis of an incremental or differential backup.

  • Log File (VSS_BS_LOG)—only a writer's log files are to be backed up. This requires a writer to have added at least one file to at least one component using the IVssCreateWriterMetadata::AddDatabaseLogFiles method. This backup type is specific to VSS.

  • Custom Restore Locations (VSS_BS_WRITER_SUPPORTS_NEW_TARGET)—indicates writer support for a requester changing, at restore time, where its files are restored. This means that a writer has been coded to check for such relocation (using IVssComponent::GetNewTarget), and has the capacity for working with relocated files.

  • Restore with Move (VSS_BS_WRITER_SUPPORTS_RESTORE_WITH_MOVE)—indicates that the writer supports running multiple writer instances with the same class ID, and it supports a requester moving a component to a different writer instance at restore time. The writer instance is specified by using a persistent writer instance name that was passed as the wszWriterInstanceName parameter to the CVssWriter::Initialize method. A requester can obtain the writer instance name using IVssExamineWriterMetadataEx::GetIdentityEx and move components during restore using IVssBackupComponentsEx::SetSelectedForRestoreEx.

    Windows Server 2003 and Windows XP: This value is not supported until Windows Server 2003 with Service Pack 1 (SP1).

  • Incremental (VSS_BS_INCREMENTAL)—indicates that the writer uses the VSS API to help the requester, ensuring that only files that have been changed or added since the last full or incremental backup are to be copied to a storage medium.

    Restoring an incremental backup requires the original backup image and all incremental backup images made since the initial backup.

  • Differential (VSS_BS_DIFFERENTIAL)—indicates that the writer uses the VSS API to help the requester ensure that only files that have been changed or added since the last full backup are to be copied to a storage medium; all intermediate backup information is ignored.

    Restoring a differential backup requires the original backup image and the most recent differential backup image made since the last full backup.

  • Incremental/Differential: Time Stamping Support (VSS_BS_TIMESTAMPED)—indicates that a writer supports using the VSS time-stamp mechanism to include files in incremental or differential operations. At backup, the writer must store a file set's backup stamp with the IVssComponent::SetBackupStamp method, and at restore retrieve it with IVssComponent::GetPreviousBackupStamp.

  • Incremental/Differential: Time of Last Modification Support (VSS_BS_LAST_MODIFY)—indicates that when implementing incremental or differential backups with differenced files, a writer can provide last modification time information independently. This information can be provided to a requester via the IVssComponent::AddDifferencedFilesByLastModifyTime method.

  • Incremental/Differential: Support Limitation (VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL)—indicates writer support of both differential or increment backup schemas, but only exclusively: for example, you cannot follow an incremental backup with a differential backup.

  • Independent System State (VSS_BS_INDEPENDENT_SYSTEM_STATE)—indicates that the writer supports backing up data that is part of the system state, but that can also be backed up independently of the system state.

    Windows Server 2003 and Windows XP: This value is not supported until Windows Vista.

  • Roll-Forward Restore (VSS_BS_ROLLFORWARD_RESTORE)—indicates that the writer supports a requester setting a roll-forward restore point using IVssBackupComponentsEx2::SetRollForward.

    Windows Server 2003 and Windows XP: This value is not supported until Windows Vista.

  • Restore Rename (VSS_BS_RESTORE_RENAME)—indicates that the writer supports a requester setting a restore name using IVssBackupComponentsEx2::SetRestoreName.

    Windows Server 2003 and Windows XP: This value is not supported until Windows Vista.

  • Authoritative Restore (VSS_BS_AUTHORITATIVE_RESTORE)—indicates that the writer supports a requester setting authoritative restore using IVssBackupComponentsEx2::SetAuthoritativeRestore.

Writers set their schemas using the IVssCreateWriterMetadata::SetBackupSchema method, and a requester obtains each writer's schema by calling IVssExamineWriterMetadata::GetBackupSchema.