In Transact-SQL, the PARTIAL keyword is an option used with BACKUP DATABASE and RESTORE DATABASE statements. A partial backup contains the primary filegroup and every read-write filegroup but excludes read-only filegroups. Likewise, a partial restore brings back just those filegroups, letting large databases be protected or recovered faster when read-only data can be recreated or is stored elsewhere.Behavior- Backup: When PARTIAL is specified (usually together with READ_WRITE_FILEGROUPS), SQL Server skips read-only filegroups, producing a smaller backup file and shorter run time.- Restore: RESTORE DATABASE ... PARTIAL rebuilds the database with only the backed-up read-write portions plus the primary filegroup. Read-only filegroups can be restored later if needed with RESTORE FILEGROUP.Caveats- Supported only in the FULL or BULK_LOGGED recovery models.- Cannot be combined with DIFFERENTIAL in the same statement (use separate differential partial backups instead).- Not available for system databases.- You must include the PRIMARY filegroup in every partial backup.- After a partial restore, the database is left in a partially restored state; additional restores may be required before recovery (ROLLBACK) is possible if read-only filegroups are still needed.
BACKUP DATABASE, RESTORE DATABASE, DIFFERENTIAL BACKUP, FILEGROUP, COPY_ONLY, RECOVERY MODEL
SQL Server 2005
A partial backup contains only the primary and all read-write filegroups of a database, omitting read-only data. It is created with the PARTIAL option.
Use RESTORE PARTIAL when you only need to recover the primary and read-write filegroups, such as after accidental data changes or corruption that did not affect read-only data.
Yes. To remain in a recoverable state under the FULL or BULK_LOGGED recovery models, you must continue taking log backups and restore them after a partial restore.
Yes. COPY_ONLY can be added to create an out-of-band partial backup that does not affect the backup chain, for example:BACKUP DATABASE MyDB READ_WRITE_FILEGROUPS TO DISK='file.bak' WITH PARTIAL, COPY_ONLY;