Cómo hacer una copia de seguridad de archivos y grupos de archivos (Transact-SQL)

Cuando el tamaño y los requisitos de rendimiento de la base de datos hagan que no sea práctico realizar una copia de seguridad completa de la base de datos, puede crear una copia de seguridad de archivo en su lugar. Una copia de seguridad de archivo contiene todos los datos de uno o varios archivos (o grupos de archivos). Para obtener más información acerca de las copias de seguridad de archivos, vea Copias de seguridad de archivos completas y Copias de seguridad diferenciales de archivos.

Nota importanteImportante

En el modelo de recuperación simple, se debe hacer una copia de seguridad de todos los archivos de lectura/escritura juntos. Esto garantiza que la base de datos se pueda restaurar a un punto temporal coherente. En lugar de especificar de forma individual cada grupo de archivos o cada archivo de lectura/escritura utilice la opción READ_WRITE_FILEGROUPS. Esta opción realiza una copia de seguridad de todos los grupos de archivos de lectura/escritura de la base de datos. Una copia de seguridad que se crea al especificar READ_WRITE_FILEGROUPS se conoce como copia de seguridad parcial. Para obtener más información, vea Copias de seguridad parciales.

Para realizar copias de seguridad de archivos y grupos de archivos

  1. Para crear una copia de seguridad de archivos o de grupos de archivos, use una instrucción BACKUP DATABASE <file_or_filegroup>. Como mínimo, esta instrucción debe especificar:

    • Nombre de la base de datos.

    • Una cláusula FILE o FILEGROUP para cada archivo o grupo de archivos, respectivamente.

    • El dispositivo de copia de seguridad en el que se escribirá la copia de seguridad completa.

    La sintaxis Transact-SQL básica para una copia de seguridad de archivos es:

    BACKUP DATABASE database

    { FILE **=**logical_file_name | FILEGROUP **=**logical_filegroup_name } [ ,...f ]

    TO backup_device [ ,...n ]

    [ WITH with_options [ ,...o ] ] ;

    Opción

    Descripción

    database

    Es la base de datos para la que se realiza la copia de seguridad del registro de transacciones, de una parte de la base de datos o de la base de datos completa.

    FILE =logical_file_name

    Especifica el nombre lógico de un archivo que se debe incluir en la copia de seguridad de archivos.

    FILEGROUP =logical_filegroup_name

    Especifica el nombre lógico de un grupo de archivos que se debe incluir en la copia de seguridad de archivos. En el modelo de recuperación simple, se permite la copia de seguridad de un grupo de archivos sólo si se trata de un grupo de archivos de sólo lectura.

    [ ,...f ]

    Se trata de un marcador de posición que indica que se pueden especificar varios archivos y grupos de archivos. El número de archivos o grupos de archivos es ilimitado.

    backup_device [ ,...n ]

    Especifica una lista de 1 a 64 dispositivos de copia de seguridad que se pueden utilizar en la operación de copia de seguridad. Puede especificar un dispositivo físico de copia de seguridad o puede especificar un dispositivo de copia de seguridad lógico correspondiente, si ya se definió. Para especificar un dispositivo de copia de seguridad físico, utilice las opciones DISK o TAPE:

    { DISK | TAPE } =physical_backup_device_name

    Para obtener más información, vea Dispositivos de copia de seguridad.

    WITH with_options [ ,...o ]

    Opcionalmente, especifica una o más opciones, como DIFFERENTIAL.

    NotaNota
    Una copia de seguridad diferencial de archivos necesita una copia de seguridad completa de archivos como base. Para obtener más información, vea Copias de seguridad diferenciales de archivos.
  2. Con el modelo de recuperación completa, también debe realizar copias de seguridad del registro de transacciones. Para utilizar un conjunto completo de copias de seguridad de completas archivos para restaurar una base de datos, también debe tener suficientes copias de seguridad de registros que abarquen todas las copias de seguridad de archivos, desde el principio de la primera copia de seguridad de archivos. Para obtener más información, vea Cómo crear una copia de seguridad del registro de transacciones (Transact-SQL).

Ejemplo

Los siguientes ejemplos realizan copias de seguridad de uno o más archivos de los grupos de archivos secundarios de la base de datos Sales. Esta base de datos utiliza el modelo de recuperación completa y contiene los siguientes grupos de archivos secundarios:

  • Un grupo de archivos denominado SalesGroup1, con los archivos SGrp1Fi1 y SGrp1Fi2.

  • Un grupo de archivos denominado SalesGroup2, con los archivos SGrp2Fi1 y SGrp2Fi2.

Nota

Con el modelo de recuperación completa, las copias de seguridad de registros periódicas son necesarias para truncar el registro y admitir la restauración de la base de datos a un momento dado.

A. Crear una copia de seguridad de archivos de dos archivos

En el siguiente ejemplo se crea una copia de seguridad diferencial de archivos sólo del archivo SGrp1Fi2 de SalesGroup1 y del archivo SGrp2Fi2 del grupo de archivos SalesGroup2.

--Backup the files in the SalesGroup1 secondary filegroup.
BACKUP DATABASE Sales
   FILE = 'SGrp1Fi2', 
   FILE = 'SGrp2Fi2' 
   TO DISK = 'G:\SQL Server Backups\Sales\SalesGroup1.bck'
GO

B. Crear una copia de seguridad completa de archivos de los grupos de archivos secundarios

En el siguiente ejemplo se crea una copia de seguridad completa de archivos de cada archivo de ambos grupos de archivos secundarios.

--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
   FILEGROUP = 'SalesGroup1',
   FILEGROUP = 'SalesGroup2'
   TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck'
GO

C. Crear una copia de seguridad diferencial de archivos de los grupos de archivos secundarios

En el siguiente ejemplo se crea una copia de seguridad diferencial de archivos de cada archivo de ambos grupos de archivos secundarios.

--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
   FILEGROUP = 'SalesGroup1',
   FILEGROUP = 'SalesGroup2'
   TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck'
GO
   WITH 
      DIFFERENTIAL,
GO