

# Importación y exportación de bases de datos de SQL Server por copias de seguridad y restauración nativas
<a name="SQLServer.Procedural.Importing"></a>

Amazon RDS admite la copia de seguridad y la restauración nativas de bases de datos de Microsoft SQL Server mediante los archivos de copia de seguridad completos (archivos .bak). Al utilizar RDS, accede a archivos almacenados en Amazon S3 en lugar de usar el sistema de archivos local en el servidor de base de datos.

Por ejemplo, puede crear una copia de seguridad completa desde su servidor local, almacenarlo en S3 y restaurarlo en una instancia de base de datos de Amazon RDS. También puede realizar copias de seguridad desde RDS, almacenarlas en S3 y restaurarlas siempre que quiera.

La copia de seguridad y la restauración nativas están disponibles en todas las regiones AWS para instancias de base de datos Single-AZ y Multi-AZ, incluidas las instancias de base de datos Multi-AZ con réplicas de lectura. La copia de seguridad y la restauración nativas están disponibles para todas las ediciones de Microsoft SQL Server compatibles con Amazon RDS.

En el siguiente diagrama se muestran los escenarios admitidos.

![\[Arquitectura de la copia de seguridad y la restauración nativas\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/SQL-bak-file.png)


El uso de archivos .bak nativos para realizar copias de seguridad y restaurar bases de datos suele ser la forma más rápida de realizar copias de seguridad y de restaurar bases de datos. El uso de la copia de seguridad y la restauración nativas ofrece muchos beneficios adicionales. Por ejemplo, puede hacer lo siguiente:
+ Migrar bases de datos a o desde Amazon RDS.
+ Mover bases de datos entre instancias de bases de datos de RDS para SQL Server.
+ Migrar datos, esquemas, procedimientos almacenados, disparadores y otro tipo de código de base de datos dentro de los archivos .bak.
+ Realizar una copia de seguridad y restaurar bases de datos únicas, en lugar de instancias de base de datos completas.
+ Crear copias de bases de datos para desarrollo, pruebas, sesiones de formación y demostraciones.
+ Almacenar y transferir archivos de copia de seguridad con Amazon S3 para capa de protección adicional para la recuperación de desastres.
+ Cree copias de seguridad nativas de bases de datos que tengan activado el cifrado de datos transparente (TDE) y restaure esas copias de seguridad en bases de datos en las instalaciones. Para obtener más información, consulte [Compatibilidad con el Cifrado de datos transparente en SQL Server](Appendix.SQLServer.Options.TDE.md).
+ Restaure copias de seguridad nativas de bases de datos en las instalaciones que tengan TDE activado en instancias de base de datos de RDS para SQL Server. Para obtener más información, consulte [Compatibilidad con el Cifrado de datos transparente en SQL Server](Appendix.SQLServer.Options.TDE.md).

**Contents**
+ [Limitaciones y recomendaciones](#SQLServer.Procedural.Importing.Native.Limitations)
+ [Configuración de la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Enabling.md)
  + [Creación manual de un rol de IAM para la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)
+ [Uso de la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Using.md)
  + [Realización de copia de seguridad de una base de datos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Backup)
    + [Uso](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Backup.Syntax)
    + [Ejemplos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Backup.Examples)
  + [Restauración de una base de datos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Restore)
    + [Uso](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Syntax)
    + [Ejemplos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Examples)
  + [Restauración de un registro](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Log)
    + [Uso](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Log.Syntax)
    + [Ejemplos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Log.Examples)
  + [Finalización de la restauración de una base de datos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Finish.Restore)
    + [Uso](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Finish.Restore.Syntax)
  + [Uso de bases de datos parcialmente restauradas](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Partially.Restored)
    + [Eliminación de una base de datos parcialmente restaurada](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Drop.Partially.Restored)
    + [Comportamiento de la restauración de instantáneas y la recuperación en un momento dado en bases de datos parcialmente restauradas](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Snapshot.Restore)
  + [Cancelación de una tarea](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Cancel)
    + [Uso](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Cancel.Syntax)
  + [Seguimiento del estado de las tareas](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking)
    + [Uso](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking.Syntax)
    + [Ejemplos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking.Examples)
    + [Respuesta](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking.Response)
+ [Compresión de archivos de copia de seguridad](SQLServer.Procedural.Importing.Native.Compression.md)
+ [Solución de problemas](SQLServer.Procedural.Importing.Native.Troubleshooting.md)
+ [Importación y exportación de datos de SQL Server por otros métodos](SQLServer.Procedural.Importing.Snapshots.md)
  + [Importación de datos a RDS para SQL Server utilizando una instantánea](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Importing.Procedure)
    + [Importación de los datos](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.Import)
      + [Asistente Generar y publicar scripts](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.MgmtStudio.ScriptWizard)
      + [Asistente para importación y exportación](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.MgmtStudio.ImportExportWizard)
      + [Copia masiva](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.MgmtStudio.BulkCopy)
  + [Exportación de datos de RDS para SQL Server](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Exporting)
    + [Asistente para importación y exportación de SQL Server](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Exporting.SSIEW)
    + [Asistente Generar y publicar scripts de SQL Server y utilidad bcp](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Exporting.SSGPSW)
+ [Uso de la utilidad BCP de Linux para importar y exportar datos](SQLServer.Procedural.Importing.BCP.Linux.md)
  + [Requisitos previos](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Prerequisites)
  + [Instalación de las herramientas de línea de comandos de SQL Server en Linux](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Installing)
  + [Exportación de datos de RDS para SQL Server](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Exporting)
    + [Sintaxis básica de exportación](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Exporting.Basic)
    + [Ejemplo de exportación](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Exporting.Example)
  + [Importación de datos a RDS para SQL Server](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Importing)
    + [Sintaxis básica de importación](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Importing.Basic)
    + [Ejemplo de importación](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Importing.Example)
  + [Opciones de BCP comunes](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Options)
  + [Prácticas recomendadas y consideraciones](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.BestPractices)
  + [Solución de problemas comunes de](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Troubleshooting)

## Limitaciones y recomendaciones
<a name="SQLServer.Procedural.Importing.Native.Limitations"></a>

El uso de la copia de seguridad y la restauración nativas tiene limitaciones como las siguientes: 
+ No se puede realizar una copia de seguridad desde un bucket de Amazon S3 situado en una región de AWS que no coincida con la de la instancia de base de datos de Amazon RDS.
+ No puede restaurar una base de datos si ya existe una base de datos SSAS con el mismo nombre. Los nombres de base de datos son únicos.
+ Recomendamos encarecidamente que no restaure copias de seguridad de una zona horaria en una zona horaria diferente. Si restaura copias de seguridad de una zona horaria a otra zona horaria distinta, debe auditar las consultas y aplicaciones para comprobar los efectos del cambio de zona horaria.
+ RDS para Microsoft SQL Server tiene un límite de tamaño de 5 TB por archivo. Para las copias de seguridad nativas de bases de datos más grandes, puede utilizar la copia de seguridad de varios archivos.
+ El tamaño máximo de la base de datos del que se puede realizar una copia de seguridad en S3 depende de la memoria, la CPU, la E/S y los recursos de red disponibles en la instancia de base de datos. Cuanto mayor sea la base de datos, más memoria consume el agente de copia de seguridad.
+ No puede realizar copias de seguridad ni restaurar de más de 10 archivos de copia de seguridad al mismo tiempo.
+ Una copia de seguridad diferencial se basa en la copia de seguridad completa. Para que funcionen los backups diferenciales, no puede crear una instantánea entre el último backup completo y la copia de seguridad diferencial. Si desea una copia de seguridad diferencial, pero existe una instantánea manual o automatizada, haga otra copia de seguridad completa antes de continuar con la copia de seguridad diferencial.
+ Las restauraciones de registros y diferenciales no son compatibles con bases de datos con archivos que tienen su file\$1guid (identificador único) establecido en `NULL`.
+ Puede ejecutar hasta dos tareas de copia de seguridad o restauración al mismo tiempo.
+ No puede realizar copias de seguridad del registro nativas desde SQL Server en Amazon RDS.
+ RDS admite restauraciones nativas de bases de datos de hasta 64 TiB. Las restauraciones nativas de bases de datos en SQL Server Express Edition están limitadas a 10 GB.
+ No se puede realizar una copia de seguridad nativa durante el periodo de mantenimiento ni mientras Amazon RDS esté creando una instantánea de la base de datos. Si una tarea de copia de seguridad nativa se superpone a la ventana de copia de seguridad diaria de RDS, la tarea de copia de seguridad nativa se cancela.
+ En las instancias de base de datos Multi-AZ, solo puede restaurar de forma nativa las bases de datos a las que se haya realizado una copia de seguridad en el modelo de recuperación completa.
+ La llamada a los procedimientos RDS para la copia de seguridad y la restauración nativas no es compatible.
+ Utilice una AWS KMS key de cifrado simétrica para cifrar las copias de seguridad. Amazon RDS no admite las claves de KMS asimétricas. Para obtener más información, consulte [Creación de claves KMS de cifrado simétricas](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) en la *Guía para desarrolladores de AWS Key Management Service*.
+ Los archivos de copia de seguridad nativos están cifrados con la clave de KMS especificada con el modo criptográfico "Solo cifrado". Al restaurar archivos de copia de seguridad cifrados, tenga en cuenta que estaban cifrados con el modo criptográfico "Solo cifrado".
+ No se puede restaurar una base de datos que contenga un grupo de archivos FILESTREAM.
+ Se admite el cifrado del servidor de Amazon S3 con AWS KMS (SSE-KMS) a través de la configuración de cifrado predeterminada del bucket de S3 cuando pasa `@enable_bucket_default_encryption=1` al procedimiento almacenado de copia de seguridad. De forma predeterminada, la restauración admite el cifrado del servidor del objeto de S3.

  Al proporcionar una clave de KMS a un procedimiento almacenado, todas las copias de seguridad y restauraciones nativas se cifran y descifran en el cliente con la clave de KMS. AWS almacena las copias de seguridad en el bucket de S3 con SSE-S3 cuando `@enable_bucket_default_encryption=0` o con la clave de cifrado predeterminada configurada del bucket de S3 cuando `@enable_bucket_default_encryption=1`.
+ Cuando se utilizan puntos de acceso de S3, el punto de acceso no se puede configurar para usar una VPC interna de RDS.
+ Para obtener el máximo rendimiento, recomendamos usar buckets de directorio o puntos de acceso para buckets de directorio, si están disponibles en su región.

Si la base de datos puede estar sin conexión mientras se crea, se copia y se restaura el archivo de copia de seguridad, recomendamos utilizar la copia de seguridad y la restauración nativas para migrarla a RDS. Si la base de datos en las instalaciones no puede estar sin conexión, recomendamos utilizar AWS Database Migration Service para migrar la base de datos a Amazon RDS. Para obtener más información, consulte [¿Qué es AWS Database Migration Service?](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 

La copia de seguridad y la restauración nativas no se han diseñado para reemplazar las capacidades de recuperación de datos de la característica de copia de instantáneas entre regiones. Recomendamos utilizar la función de copia de instantáneas para copiar la instantánea de base de datos en otra región de AWS para la recuperación de desastres entre regiones en Amazon RDS. Para obtener más información, consulte [Copia de una instantánea de base de datos para Amazon RDS](USER_CopySnapshot.md).

# Configuración de la copia de seguridad y la restauración nativas
<a name="SQLServer.Procedural.Importing.Native.Enabling"></a>

Para configurar la copia de seguridad y la restauración nativas, son necesarios tres componentes:

1. Un bucket de Amazon S3 para almacenar los archivos de copia de seguridad.

   Debe tener un bucket S3 para utilizar con sus archivos de copia de seguridad y después cargar las copias de seguridad que quiera migrar a RDS. Si ya tiene un bucket de Amazon S3, puede utilizarlo. Si no dispone de un bucket, puede [crear un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html). También puede hacer que se cree automáticamente un bucket cuando añada la opción `SQLSERVER_BACKUP_RESTORE` mediante la Consola de administración de AWS.

   Para obtener más información sobre el uso de S3, consulte la [Guía del usuario de Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

1. Un rol de AWS Identity and Access Management (IAM) para acceder al bucket.

   Si ya tiene un rol de IAM, puede utilizarlo. También puede elegir que un nuevo rol de IAM se cree en su nombre cuando se agregue la opción `SQLSERVER_BACKUP_RESTORE` mediante la Consola de administración de AWS. Si lo desea, puede crear uno nuevo manualmente.

   Si desea crear un nuevo rol de IAM manualmente, siga las indicaciones de la siguiente sección. Haga lo mismo si desea asociar relaciones de confianza y directivas de permisos a un rol de IAM existente.

1. La opción `SQLSERVER_BACKUP_RESTORE` añadida a un grupo de opciones en la instancia de base de datos.

   Para activar la copia de seguridad y la restauración nativas en la instancia de base de datos, añada la opción `SQLSERVER_BACKUP_RESTORE` a un grupo de opciones en la instancia de base de datos. Para obtener más información e instrucciones, consulte [Compatibilidad con copia de seguridad y restauración nativas en SQL Server](Appendix.SQLServer.Options.BackupRestore.md).

## Creación manual de un rol de IAM para la copia de seguridad y la restauración nativas
<a name="SQLServer.Procedural.Importing.Native.Enabling.IAM"></a>

Si desea crear manualmente un nuevo rol de IAM para utilizarlo con la copia de seguridad y la restauración nativas, puede hacerlo. En este caso, se crea un rol para delegar los permisos desde el servicio de Amazon RDS a su bucket de Amazon S3. Cuando cree un rol de IAM, asocie una relación de confianza y una política de permisos. La relación de confianza permite que RDS adopte este rol. La política de permisos define las acciones que puede realizar este rol. Para obtener más información acerca de cómo crear un rol, consulte [Crear un rol para delegar permisos a un servicio AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html).

En el caso de la copia de seguridad y la restauración nativas, utilice relacione de confianza y políticas de permisos similares a las de los ejemplos de esta sección. En el ejemplo siguiente, vamos a usar el nombre de la entidad principal de servicio, `rds.amazonaws.com`, como alias de todas las cuentas del servicio. En los otros ejemplos, especificamos un Nombre de recurso de Amazon (ARN) para identificar otra cuenta, usuario o función con acceso a la política de confianza.

Le recomendamos que utilice las claves de contexto de condición globales de [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) y [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) en las relaciones de confianza basadas en recursos para limitar los permisos del servicio a un recurso específico. Esta es la forma más eficaz de protegerse contra el [problema del suplente confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

Puede utilizar claves de contexto de condición globales y hacer que el valor de `aws:SourceArn` contenga el ID de cuenta. En estos casos, el valor de `aws:SourceAccount` y la cuenta del valor de `aws:SourceArn` deben utilizar el mismo ID de cuenta cuando se utilizan en la misma instrucción.
+ Use `aws:SourceArn` si quiere acceso entre servicios para un único recurso.
+ Use `aws:SourceAccount` si quiere permitir que cualquier recurso de esa cuenta se asocie al uso entre servicios.

En la relación de confianza, asegúrese de utilizar la clave de contexto de condición global `aws:SourceArn` con el ARN completo de los recursos que acceden al rol. Para la restauración y la copia de seguridad nativa, asegúrese de incluir tanto el grupo de opciones de base de datos como las instancias de base de datos, como se muestra en el siguiente ejemplo.

**Example Ejemplo de relación de confianza con la clave de contexto de condición global para la restauración y la copia de seguridad nativa**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "arn:aws:rds:Region:0123456789:db:db_instance_identifier",
                        "arn:aws:rds:Region:0123456789:og:option_group_name"
                    ],
                    "aws:SourceAccount": "0123456789"
                }
            }
        }
    ]
}
```

En el siguiente ejemplo se utiliza un ARN para especificar un recurso. Para obtener más información sobre cómo usar ARN, consulte [Nombres de recursos de Amazon (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). 

**Example Ejemplo de política de permisos para la restauración y copia de seguridad nativa sin cifrado**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
        "Effect": "Allow",
        "Action":
            [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
        },
        {
        "Effect": "Allow",
        "Action":
            [
                "s3:GetObjectAttributes",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
            ],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

**Example política de permisos para la restauración y copia de seguridad nativa con cifrado**  
Si desea cifrar los archivos de copia de seguridad, incluya una clave de cifrado en la política de permisos. Para obtener más información acerca de las claves de cifrado, consulte la [introducción](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html) en la *guía para desarrolladores de AWS Key Management Service*.  
Debe utilizar una clave de cifrado de KMS simétrica para cifrar las copias de seguridad. Amazon RDS no admite las claves de KMS asimétricas. Para obtener más información, consulte [Creación de claves KMS de cifrado simétricas](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) en la *Guía para desarrolladores de AWS Key Management Service*.  
El rol de IAM también debe ser un usuario de claves y un administrador de claves de la clave de KMS; es decir, debe estar especificado en la política de claves. Para obtener más información, consulte [Creación de claves KMS de cifrado simétricas](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) en la *Guía para desarrolladores de AWS Key Management Service*.  
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToKey",
      "Effect": "Allow",
      "Action": [
        "kms:DescribeKey",
        "kms:GenerateDataKey",
        "kms:Encrypt",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id"
    },
    {
      "Sid": "AllowAccessToS3",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
    },
    {
      "Sid": "GetS3Info",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectAttributes",
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListMultipartUploadParts",
        "s3:AbortMultipartUpload"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
    }
  ]
}
```

**Example política de permisos para la restauración y copia de seguridad nativa mediante puntos de acceso sin compatibilidad con el cifrado**  
Las acciones necesarias para usar los puntos de acceso de S3 son las mismas que para los buckets de S3. La ruta de recursos se actualiza para que coincida con el patrón del ARN del punto de acceso de S3.  
Los puntos de acceso deben configurarse para utilizar el **origen de la red: Internet**, ya que RDS no publica VPC privadas. El tráfico de S3 de las instancias de RDS no pasa por el Internet público, ya que pasa por VPC privadas.  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
                ],
            "Resource": [
            "arn:aws:s3:us-east-1:111122223333:accesspoint/amzn-s3-demo-ap",
            "arn:aws:s3:::underlying-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObjectAttributes",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
                ],
                "Resource": [
                "arn:aws:s3:us-east-1:111122223333:accesspoint/amzn-s3-demo-ap/*",
                    "arn:aws:s3:::underlying-bucket/*"
                    ]
                }
            ]   
}
```

**Example política de permisos para la copia de seguridad y restauración nativas usando puntos de acceso para buckets de directorios sin compatibilidad con cifrado**  
Los buckets de directorio usan un [mecanismo de autorización basado en sesiones](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-authenticating-authorizing.html) diferente al de los buckets de uso general, por lo que solo se necesita el permiso “s3express:CreateSession” a nivel de bucket para la restauración de copias de seguridad nativas. Para configurar el acceso a nivel de objeto, debe usar [puntos de acceso para buckets de directorio](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-points-directory-buckets-policies.html).  
Los puntos de acceso deben configurarse para utilizar el **origen de la red: Internet**, ya que RDS no publica VPC privadas. El tráfico de S3 de las instancias de RDS no pasa por el Internet público, ya que pasa por VPC privadas.  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
        "Effect": "Allow",
        "Action": "s3express:CreateSession",
        "Resource": 
            [
                "arn:aws:s3express:us-east-1:111122223333:accesspoint/amzn-s3-demo-accesspoint--use1-az6--xa-s3",
                "arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--use1-az6--x-s3"
            ]
        }
    ]
}
```

# Uso de la copia de seguridad y la restauración nativas
<a name="SQLServer.Procedural.Importing.Native.Using"></a>

Una vez que haya activado y configurado la copia de seguridad y la restauración nativas, puede empezar a utilizarlos. En primer lugar, conéctese a la base de datos de Microsoft SQL Server y, a continuación, llame a un procedimiento almacenado de Amazon RDS para que haga el trabajo. Para obtener instrucciones acerca de cómo conectarse a la base de datos, consulte [Conexión a la instancia de base de datos de Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md). 

Algunos procedimientos almacenados necesitan que asigne un nombre de recurso de Amazon (ARN) al bucket de Amazon S3 y al archivo. El formato del ARN es `arn:aws:s3:::bucket_name/file_name.extension`. Amazon S3 no requiere un número de cuenta ni una región de AWS en los ARN.

Si también proporciona una clave de KMS opcional, el formato para el ARN de la clave es `arn:aws:kms:region:account-id:key/key-id`. Para obtener más información, consulte [Nombres de recursos de Amazon (ARN) y espacios de nombres de servicios AWS](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). Debe utilizar una clave de cifrado de KMS simétrica para cifrar las copias de seguridad. Amazon RDS no admite las claves de KMS asimétricas. Para obtener más información, consulte [Creación de claves KMS de cifrado simétricas](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) en la *Guía para desarrolladores de AWS Key Management Service*.

**nota**  
Independientemente de que utilice o no una clave de KMS, de forma predeterminada, las tareas nativas de copia de seguridad y restauración habilitan el cifrado de 256 bits del estándar de cifrado avanzado (AES) del servidor a través de SSE-S3 para los archivos cargados en S3. Al pasar `@enable_bucket_default_encryption=1` al procedimiento almacenado de copia de seguridad, se utiliza la clave de cifrado predeterminada configurada del bucket de S3.

Para obtener instrucciones acerca de cómo llamar a cada procedimiento almacenado, consulte los siguientes temas:
+ [Realización de copia de seguridad de una base de datos](#SQLServer.Procedural.Importing.Native.Using.Backup)
+ [Restauración de una base de datos](#SQLServer.Procedural.Importing.Native.Using.Restore)
+ [Restauración de un registro](#SQLServer.Procedural.Importing.Native.Restore.Log)
+ [Finalización de la restauración de una base de datos](#SQLServer.Procedural.Importing.Native.Finish.Restore)
+ [Uso de bases de datos parcialmente restauradas](#SQLServer.Procedural.Importing.Native.Partially.Restored)
+ [Cancelación de una tarea](#SQLServer.Procedural.Importing.Native.Using.Cancel)
+ [Seguimiento del estado de las tareas](#SQLServer.Procedural.Importing.Native.Tracking)

## Realización de copia de seguridad de una base de datos
<a name="SQLServer.Procedural.Importing.Native.Using.Backup"></a>

Para realizar una copia de seguridad de una base de datos, use el procedimiento almacenado `rds_backup_database`.

**nota**  
No se puede realizar una copia de seguridad de una base de datos durante el periodo de mantenimiento ni mientras Amazon RDS esté tomando una instantánea. 

### Uso
<a name="SQLServer.Procedural.Importing.Native.Backup.Syntax"></a>

```
exec msdb.dbo.rds_backup_database
	@source_db_name='database_name',
	@s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name.extension',
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],	
	[@overwrite_s3_backup_file=0|1],
	[@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n],
	[@type='DIFFERENTIAL|FULL'],
	[@number_of_files=n],
	[@enable_bucket_default_encryption=0|1];
```

Se requieren los siguientes parámetros:
+ `@source_db_name`: nombre de la base de datos de la que se va a realizar la copia de seguridad.
+ `@s3_arn_to_backup_to`: el ARN que indica el bucket de Amazon S3, el punto de acceso, el bucket de directorio o el punto de acceso para el bucket de directorio que se usará para la copia de seguridad, además del nombre del archivo de copia de seguridad.

  El archivo puede tener cualquier extensión, pero se suele utilizar `.bak`. Tenga en cuenta que los ARN de los puntos de acceso deben tener el formato `arn:aws:s3:us-east-1:111122223333:access-point-name/object/key`.

Los siguientes parámetros son opcionales:
+ `@kms_master_key_arn`: ARN de la clave de cifrado de KMS simétrica que se va a utilizar para cifrar el elemento.
  + No puede usar la clave de cifrado predeterminada. Si utiliza la clave predeterminada, no se realizará una copia de seguridad de la base de datos.
  +  Si no especifica un identificador de clave KMS, el archivo de copia de seguridad no se cifrará. Para obtener más información, consulte [Cifrado de recursos de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html).
  + Cuando se especifica una clave de KMS, se utiliza el cifrado del lado del cliente.
  + Amazon RDS no admite las claves de KMS asimétricas. Para obtener más información, consulte [Creación de claves KMS de cifrado simétricas](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) en la *Guía para desarrolladores de AWS Key Management Service*.
+ `@overwrite_s3_backup_file`: un valor que indica si se va a sobrescribir un archivo de copia de seguridad existente.
  + `0`: no se sobrescribe el archivo existente. Este valor es el valor predeterminado.

    Al establecer `@overwrite_s3_backup_file` en 0, se devuelve un error si ya existe el archivo.
  + `1`: se sobrescribe un archivo existente que tenga el nombre especificado, aunque no sea un archivo de copia de seguridad.
+ `@type`: el tipo de copia de seguridad.
  + `DIFFERENTIAL`: se crea una copia de seguridad diferencial.
  + `FULL`: se crea una copia de seguridad completa. Este valor es el valor predeterminado.

  Una copia de seguridad diferencial se basa en la copia de seguridad completa. Para que funcionen los backups diferenciales, no puede crear una instantánea entre el último backup completo y la copia de seguridad diferencial. Si desea una copia de seguridad diferencial, pero existe una instantánea, haga otra copia de seguridad completa antes de continuar con la copia de seguridad diferencial.

  Puede buscar la última copia de seguridad completa o instantánea con la siguiente consulta de SQL de ejemplo:

  ```
  select top 1
  database_name
  , 	backup_start_date
  , 	backup_finish_date
  from    msdb.dbo.backupset
  where   database_name='mydatabase'
  and     type = 'D'
  order by backup_start_date desc;
  ```
+ `@number_of_files`: el número de archivos en los que se dividirá la copia de seguridad (fragmentada). El número máximo es 10.
  + La copia de seguridad de varios archivos es compatible tanto para copias de seguridad completas como diferenciales.
  + Si introduce un valor de 1 u omite el parámetro, se creará un único archivo de copia de seguridad.

  Proporcione el prefijo que comparten los archivos y, a continuación, agregue un asterisco () como suf (`*`). El asterisco puede estar en cualquier parte de *nombre\$1archivo* del ARN de S3. El asterisco se sustituye por una serie de cadenas alfanuméricas en los archivos generados, empezando por `1-of-number_of_files`.

  Por ejemplo, si los nombres de archivo en el ARN de S3 son `backup*.bak` y establece `@number_of_files=4`, los archivos de copia de seguridad generados son `backup1-of-4.bak`, `backup2-of-4.bak`, `backup3-of-4.bak` y `backup4-of-4.bak`.
  + Si ya existe alguno de los nombres de archivo y `@overwrite_s3_backup_file` es 0, se devuelve un error.
  + Las copias de seguridad de varios archivos solo pueden tener un asterisco en la parte *nombre\$1archivo* del ARN de S3.
  + Las copias de seguridad de un solo archivo pueden tener cualquier número de asteriscos en la parte *nombre\$1archivo* del ARN de S3. Los asteriscos no se eliminan del nombre de archivo generado.
+ `@block_size`: tamaño del bloque (en bytes) que especifica el tamaño del bloque físico para las operaciones de copia de seguridad. Los valores válidos son 512, 1024, 2048, 4096, 8192, 16 384, 32 768 y 65 536.
+ `@max_transfer_size`: el tamaño máximo de transferencia indica el límite superior del volumen de datos (en bytes) transmitidos por operación de E/S durante el proceso de copia de seguridad. Los valores válidos son múltiplos de 65 536 bytes (64 KB) hasta 4 194 304 bytes (4 MB). 
+ `@buffer_count`: número total de búferes de E/S que se utilizarán para el proceso de copia de seguridad.
+ `@enable_bucket_default_encryption`: un valor que indica si se debe utilizar la configuración de cifrado predeterminada del bucket de S3 para el cifrado del servidor en S3. Los buckets de directorios siempre usan la configuración de cifrado predeterminada del bucket, independientemente de este ajuste.
  + `0`: el cifrado del servidor utiliza el cifrado de 256 bits del estándar de cifrado avanzado (AES) a través de SSE-S3.
  + `1`: el cifrado del servidor utiliza el [cifrado predeterminado](https://docs.aws.amazon.com//AmazonS3/latest/userguide/bucket-encryption.html) configurado del bucket de S3. 

### Ejemplos
<a name="SQLServer.Procedural.Importing.Native.Backup.Examples"></a>

**Example de copia de seguridad diferencial**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak',
@overwrite_s3_backup_file=1,
@type='DIFFERENTIAL';
```

**Example de copia de seguridad completa con cifrado del cliente**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE',
@overwrite_s3_backup_file=1,
@type='FULL';
```

**Example de copia de seguridad de varios archivos**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=4;
```

**Example de copia de seguridad diferencial de varios múltiples**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@type='DIFFERENTIAL',
@number_of_files=4;
```

**Example de copia de seguridad de varios archivos con cifrado**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE',
@number_of_files=4;
```

**Example de copia de seguridad de varios archivos con sobrescritura de S3**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@overwrite_s3_backup_file=1,
@number_of_files=4;
```

**Example de respaldo con tamaño de bloque**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@block_size=512;
```

**Example de copia de seguridad de varios archivos con `@max_transfer_size` y `@buffer_count`**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=4,
@max_transfer_size=4194304,
@buffer_count=10;
```

**Example de copia de seguridad de un solo archivo con el parámetro @number\$1of\$1files**  
En este ejemplo se genera un archivo de copia de seguridad denominado `backup*.bak`.  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=1;
```

**Example de copia de seguridad completa con cifrado del servidor**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@overwrite_s3_backup_file=1,
@type='FULL',
@enable_bucket_default_encryption=1;
```

**Example de copia de seguridad completa mediante un punto de acceso**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/object/backup1.bak',
@overwrite_s3_backup_file=1,
@type='FULL';
```

**Example de copia de seguridad completa usando un punto de acceso para un bucket de directorio**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3express:us-east-1:123456789012:accesspoint/my-access-point--use1-az6--xa-s3/object/backup1.bak',
@overwrite_s3_backup_file=1,
@type='FULL';
```

## Restauración de una base de datos
<a name="SQLServer.Procedural.Importing.Native.Using.Restore"></a>

Para restaurar la base de datos, llame al procedimiento almacenado `rds_restore_database`. Amazon RDS crea una instantánea inicial de la base de datos una vez que finalice la tarea de restauración y se abra la base de datos.

### Uso
<a name="SQLServer.Procedural.Importing.Native.Restore.Syntax"></a>

```
exec msdb.dbo.rds_restore_database
	@restore_db_name='database_name',
	@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name.extension',
	@with_norecovery=0|1,
	[@keep_cdc=0|1],
	[@data_file_volume='D:|H:|I:|J:'],
	[@log_file_volume='D:|H:|I:|J:'],
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],
        [@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n],
	[@type='DIFFERENTIAL|FULL'];
```

Se requieren los siguientes parámetros:
+ `@restore_db_name`: nombre de la base de datos que se va a restaurar. Los nombres de base de datos son únicos. No puede restaurar una base de datos si ya existe una base de datos SSAS con el mismo nombre.
+ `@s3_arn_to_restore_from` – el ARN que indica el prefijo de Amazon S3 y los nombres de los archivos de copia de seguridad utilizados para restaurar la base de datos.
  + Para una copia de seguridad de un solo archivo, proporcione todo el nombre del archivo.
  + Para una copia de seguridad de varios archivos, proporcione el prefijo que comparten los archivos y, a continuación, agregue un asterisco () como suf (`*`).
    + Si usa un depósito de directorio, el ARN debe terminar en `/*` debido a las [diferencias entre los buckets de directorio](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-differences.html).
  + Si `@s3_arn_to_restore_from` está vacío, se devolverá el siguiente mensaje de error: S3 ARN prefix cannot be empty.

El siguiente parámetro es obligatorio para las restauraciones diferenciales, pero opcional para las restauraciones completas:
+ `@with_norecovery`: la cláusula de recuperación que se utilizará para la operación de restauración.
  + Establezca esta opción en `0` para la restauración con RECOVERY. En este caso, la base de datos está online tras la restauración.
  + Establezca esta opción en `1` para la restauración con NORECOVERY. En este caso, la base de datos permanece en estado RESTORING una vez finalizada la tarea de restauración. Con este método, puede realizar restauraciones diferenciales posteriores.
  + En las restauraciones DIFFERENTIAL, especifique `0` o `1`.
  + En las restauraciones `FULL`, este valor se establece de forma predeterminada en `0`.

Los siguientes parámetros son opcionales:
+ `@keep_cdc`: indica si se debe retener la configuración de Captura de datos de cambio (CDC) en la base de datos restaurada. Configure `1` para habilitar KEEP\$1CDC, `0` para desactivarlo. El valor predeterminado es `0`.
+ `@data_file_volume`: especifica la letra de unidad para los archivos de datos de la base de datos. El valor predeterminado es `D:`.
+ `@log_file_volume`: especifica la letra de unidad para los archivos de registro de la base de datos. El valor predeterminado es `D:`.
+ `@kms_master_key_arn`: si cifró el archivo de copia de seguridad, se trata de la clave de KMS que se va a utilizar para descifrar el archivo.

  Cuando se especifica una clave de KMS, se utiliza el cifrado del lado del cliente.
+ `@type`: el tipo de restauración. Los tipos válidos son `DIFFERENTIAL` y `FULL`. El valor predeterminado es `FULL`.
+ `@block_size`: tamaño del bloque (en bytes) que especifica el tamaño del bloque físico para las operaciones de copia de seguridad. Los valores válidos son 512, 1024, 2048, 4096, 8192, 16 384, 32 768 y 65 536.
+ `@max_transfer_size`: el tamaño máximo de transferencia indica el límite superior del volumen de datos (en bytes) transmitidos por operación de E/S durante el proceso de copia de seguridad. Los valores válidos son múltiplos de 65 536 bytes (64 KB) hasta 4 194 304 bytes (4 MB). 
+ `@buffer_count`: número total de búferes de E/S que se utilizarán para el proceso de copia de seguridad.

**nota**  
En las restauraciones diferenciales, la base de datos debe tener el estado RESTORING o debe existir previamente una tarea que restaure con NORECOVERY.  
No puede restaurar copias de seguridad diferenciales posteriores mientras la base de datos esté online.  
No puede enviar una tarea de restauración para una base de datos que ya tenga una tarea de restauración pendiente con RECOVERY.  
No se admiten las restauraciones completas con NORECOVERY y KEEP\$1CDC.  
Las restauraciones nativas no son compatibles con las instancias que tienen réplicas de lectura entre regiones.  
Para las configuraciones admitidas, la restauración de una base de datos en una instancia multi-AZ con réplicas de lectura es similar a la restauración de una base de datos en una instancia multi-AZ. No es necesario realizar ninguna acción adicional para restaurar una base de datos en una réplica.

### Ejemplos
<a name="SQLServer.Procedural.Importing.Native.Restore.Examples"></a>

**Example de restauración de un solo archivo**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
```

**Example de restauración de múltiples archivos**  
Para evitar errores al restaurar varios archivos, asegúrese de que todos los archivos de copia de seguridad tienen el mismo prefijo y que ningún otro archivo lo utiliza.  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*';
```

**Example de restauración completa de una base de datos con RECOVERY**  
En los tres ejemplos siguientes, se realiza la misma tarea, una restauración completa con RECOVERY.  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
```

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
[@type='DIFFERENTIAL|FULL'];
```

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='FULL',
@with_norecovery=0;
```

**Example de restauración completa de una base de datos con cifrado**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

**Example de restauración con tamaño de bloque**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@block_size=512;
```

**Example de restaurar varios archivos con @max\$1transfer\$1size y @buffer\$1count**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*',
@max_transfer_size=4194304,
@buffer_count=10;
```

**Example de restauración completa de una base de datos con NORECOVERY**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='FULL',
@with_norecovery=1;
```

**Example de restauración diferencial con NORECOVERY**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=1;
```

**Example de restauración diferencial con RECOVERY**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=0;
```

**Example de restauración de la base de datos completa con RECOVERY mediante un punto de acceso**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/object/backup1.bak',
@with_norecovery=0;
```

**Example de restauración de la base de datos completa con KEEP\$1CDC**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@keep_cdc=1;
```

## Restauración de un registro
<a name="SQLServer.Procedural.Importing.Native.Restore.Log"></a>

Para restaurar el registro, llame al procedimiento almacenado `rds_restore_log`.

### Uso
<a name="SQLServer.Procedural.Importing.Native.Restore.Log.Syntax"></a>

```
exec msdb.dbo.rds_restore_log 
	@restore_db_name='database_name',
	@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/log_file_name.extension',
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],
	[@with_norecovery=0|1],
	[@keep_cdc=0|1],
	[@stopat='datetime'],
	[@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n];
```

Se requieren los siguientes parámetros:
+ `@restore_db_name`: nombre de la base de datos cuyo registro se va a restaurar.
+ `@s3_arn_to_restore_from`: el ARN que indica el prefijo de Amazon S3 y el nombre del archivo de registro utilizado para restaurarlo. El archivo puede tener cualquier extensión, pero se suele utilizar `.trn`.

  Si `@s3_arn_to_restore_from` está vacío, se devolverá el siguiente mensaje de error: S3 ARN prefix cannot be empty.

Los siguientes parámetros son opcionales:
+ `@keep_cdc`: indica si se debe retener la configuración de Captura de datos de cambio (CDC) en la base de datos restaurada. Configure 1 para habilitar KEEP\$1CDC, 0 para desactivarlo. El valor predeterminado es 0.
+ `@kms_master_key_arn`: si cifró el registro, se trata de la clave de KMS que se va a utilizar para descifrar el registro.
+ `@with_norecovery`: la cláusula de recuperación que se utilizará para la operación de restauración. Este valor se establece de forma predeterminada en `1`.
  + Establezca esta opción en `0` para la restauración con RECOVERY. En este caso, la base de datos está online tras la restauración. No puede restaurar más copias de seguridad de registros mientras la base de datos esté online.
  + Establezca esta opción en `1` para la restauración con NORECOVERY. En este caso, la base de datos permanece en estado RESTORING una vez finalizada la tarea de restauración. Con este método, puede realizar restauraciones de registros posteriores.
+ `@stopat`: un valor que especifica que la base de datos se restaura al estado que presentaba en la fecha y la hora especificadas (en formato fechahora). Solo se aplican a la base de datos los registros de transacciones escritos antes de la fecha y la hora especificadas.

  Si no se especifica este parámetro (es NULL), se restaura el registro completo.
+ `@block_size`: tamaño del bloque (en bytes) que especifica el tamaño del bloque físico para las operaciones de copia de seguridad. Los valores válidos son 512, 1024, 2048, 4096, 8192, 16 384, 32 768 y 65 536.
+ `@max_transfer_size`: el tamaño máximo de transferencia indica el límite superior del volumen de datos (en bytes) transmitidos por operación de E/S durante el proceso de copia de seguridad. Los valores válidos son múltiplos de 65 536 bytes (64 KB) hasta 4 194 304 bytes (4 MB). 
+ `@buffer_count`: número total de búferes de E/S que se utilizarán para el proceso de copia de seguridad.

**nota**  
En las restauraciones de registros, la base de datos debe tener un estado de restauración o debe existir previamente una tarea que restaure con NORECOVERY.  
No puede restaurar copias de seguridad de registros mientras la base de datos esté online.  
No puede enviar una tarea de restauración de registros en una base de datos que ya tenga una tarea de restauración pendiente con RECOVERY.

### Ejemplos
<a name="SQLServer.Procedural.Importing.Native.Restore.Log.Examples"></a>

**Example de restauración de registros**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
```

**Example de restauración de registros con cifrado**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

**Example de restauración de registros con NORECOVERY**  
En los dos ejemplos siguientes, se realiza la misma tarea, una restauración de registros con NORECOVERY.  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=1;
```

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
```

**Example de restauración con tamaño de bloque**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@block_size=512;
```

**Example de restauración de registros con RECOVERY**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=0;
```

**Example de restauración de registros con la cláusula STOPAT**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=0,
@stopat='2019-12-01 03:57:09';
```

**Example de restauración de registros con KEEP\$1CDC**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@keep_cdc=1;
```

## Finalización de la restauración de una base de datos
<a name="SQLServer.Procedural.Importing.Native.Finish.Restore"></a>

Si la última tarea de restauración de la base de datos se ha realizado con `@with_norecovery=1`, la base de datos tiene ahora el estado RESTORING. Abra esta base de datos para el uso normal mediante el procedimiento almacenado `rds_finish_restore`.

### Uso
<a name="SQLServer.Procedural.Importing.Native.Finish.Restore.Syntax"></a>

```
exec msdb.dbo.rds_finish_restore @db_name='database_name';
```

**nota**  
Para utilizar este método, la base de datos debe tener el estado RESTORING sin ninguna tarea de restauración pendiente.  
Para finalizar la restauración de la base de datos, utilice el inicio de sesión maestro. O utilice el inicio de sesión del usuario que restauró la base de datos más recientemente o inicie sesióncon NORECOVERY.

## Uso de bases de datos parcialmente restauradas
<a name="SQLServer.Procedural.Importing.Native.Partially.Restored"></a>

### Eliminación de una base de datos parcialmente restaurada
<a name="SQLServer.Procedural.Importing.Native.Drop.Partially.Restored"></a>

Para eliminar una base de datos parcialmente restaurada (que se ha quedado en el estado RESTORING), utilice el procedimiento almacenado `rds_drop_database`.

```
exec msdb.dbo.rds_drop_database @db_name='database_name';
```

**nota**  
No puede enviar una solicitud DROP para una base de datos que ya tenga una tarea de restauración pendiente o una tarea de restauración finalizada.  
Para eliminar la base de datos, utilice el inicio de sesión maestro. O utilice el inicio de sesión del usuario que restauró la base de datos más recientemente o inicie sesióncon NORECOVERY.

### Comportamiento de la restauración de instantáneas y la recuperación en un momento dado en bases de datos parcialmente restauradas
<a name="SQLServer.Procedural.Importing.Native.Snapshot.Restore"></a>

Las bases de datos parcialmente restauradas de la instancia de origen (que se ha quedado en el estado RESTORING) se eliminan de la instancia de destino durante la recuperación en un momento dado y la restauración de una instantánea.

## Cancelación de una tarea
<a name="SQLServer.Procedural.Importing.Native.Using.Cancel"></a>

Para cancelar una tarea de copia de seguridad o de restauración, llame al procedimiento almacenado `rds_cancel_task`.

**nota**  
No se puede cancelar una tarea FINISH\$1RESTORE.

### Uso
<a name="SQLServer.Procedural.Importing.Native.Cancel.Syntax"></a>

```
exec msdb.dbo.rds_cancel_task @task_id=ID_number;
```

El siguiente parámetro es obligatorio:
+ `@task_id`: ID de la tarea que se va a cancelar. Puede obtener el ID de la tarea llamando a `rds_task_status`. 

## Seguimiento del estado de las tareas
<a name="SQLServer.Procedural.Importing.Native.Tracking"></a>

Para realizar un seguimiento del estado de las tareas de copia de seguridad o de restauración, llame al procedimiento almacenado `rds_task_status`. Si no proporciona ningún parámetro, el procedimiento almacenado devuelve el estado de todas las tareas. El estado de las tareas se actualiza cada dos minutos aproximadamente. El historial de tareas se conserva durante 36 días.

### Uso
<a name="SQLServer.Procedural.Importing.Native.Tracking.Syntax"></a>

```
exec msdb.dbo.rds_task_status
	[@db_name='database_name'],
	[@task_id=ID_number];
```

Los siguientes parámetros son opcionales: 
+ `@db_name`: nombre de la base de datos para la que se desea mostrar el estado de una tarea.
+ `@task_id`: ID de la tarea cuyo estado se desea mostrar.

### Ejemplos
<a name="SQLServer.Procedural.Importing.Native.Tracking.Examples"></a>

**Example de descripción del estado de una tarea específica**  

```
exec msdb.dbo.rds_task_status @task_id=5;
```

**Example de descripción del estado de una tarea y una base de datos específicas**  

```
exec msdb.dbo.rds_task_status
@db_name='my_database',
@task_id=5;
```

**Example de descripción de todas las tareas y sus estados en una base de datos específica**  

```
exec msdb.dbo.rds_task_status @db_name='my_database';
```

**Example de descripción de todas las tareas y sus estados en la instancia actual**  

```
exec msdb.dbo.rds_task_status;
```

### Respuesta
<a name="SQLServer.Procedural.Importing.Native.Tracking.Response"></a>

El procedimiento almacenado `rds_task_status` devuelve las siguientes columnas.


****  

| Columna | Descripción | 
| --- | --- | 
| `task_id` |  El ID de la tarea.   | 
| `task_type` |  El tipo de tarea que depende de los parámetros de entrada, como se indica a continuación: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html) Amazon RDS crea una instantánea inicial de la base de datos después de que esta se abra tras la finalización de las siguientes tareas de restauración: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html)  | 
| `database_name` |  El nombre de la base de datos a la que está asociada la tarea.   | 
| `% complete` |  El valor porcentual de progreso de la tarea.   | 
| `duration (mins)` |  El tiempo empleado en la tarea, en minutos.   | 
| `lifecycle` |  El estado de la tarea. Los posibles estados son los siguientes:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html)  | 
| `task_info` |  Información adicional acerca de la tarea.  Si ocurre un error al realizar una copia de seguridad o al restaurar una base de datos, esta columna contiene información acerca del error. Para obtener una lista de posibles errores y estrategias de mitigación, consulte [Solución de problemas](SQLServer.Procedural.Importing.Native.Troubleshooting.md).   | 
| `last_updated` |  La fecha y hora en que se actualizó por última vez el estado de la tarea. El estado se actualiza cada vez que la tarea progresa un 5 %.  | 
| `created_at` | La fecha y hora en que se creó la tarea. | 
| S3\$1object\$1arn | El ARN que indica el prefijo de Amazon S3 y el nombre del archivo que se está restaurando o del que se está realizando una copia de seguridad. | 
| `overwrite_s3_backup_file` |  El valor del parámetro `@overwrite_s3_backup_file` especificado al llamar a una tarea de backup. Para obtener más información, consulte [Realización de copia de seguridad de una base de datos](#SQLServer.Procedural.Importing.Native.Using.Backup).  | 
| KMS\$1master\$1key\$1arn | El ARN de la clave de KMS que se utilizó para el cifrado (para la copia de seguridad) y el descifrado (para la restauración). | 
| filepath | No se aplica a las tareas de copia de seguridad y restauración nativas. | 
| overwrite\$1file | No se aplica a las tareas de copia de seguridad y restauración nativas. | 

# Compresión de archivos de copia de seguridad
<a name="SQLServer.Procedural.Importing.Native.Compression"></a>

Para ahorrar espacio en el bucket de Amazon S3 puede comprimir los archivos de backup. Para obtener más información acerca de cómo comprimir archivos de backup, consulte [Compresión de copia de seguridad](https://msdn.microsoft.com/en-us/library/bb964719.aspx) en la documentación de Microsoft. 

La compresión de archivos de backup se admite para las siguientes ediciones de base de datos: 
+ Microsoft SQL Server Enterprise Edition 
+ Microsoft SQL Server Standard Edition 

Para verificar la opción de la compresión de los archivos de copia de seguridad, ejecute el código siguiente:

```
1. exec rdsadmin.dbo.rds_show_configuration 'S3 backup compression';
```

Para activar la compresión de los archivos de backup, ejecute el código siguiente:

```
1. exec rdsadmin.dbo.rds_set_configuration 'S3 backup compression', 'true';
```

Para desactivar la compresión de los archivos de backup, ejecute el código siguiente: 

```
1. exec rdsadmin.dbo.rds_set_configuration 'S3 backup compression', 'false';
```

# Solución de problemas
<a name="SQLServer.Procedural.Importing.Native.Troubleshooting"></a>

A continuación se muestran los problemas que pueden presentarse al utilizar la copia de seguridad y la restauración nativas.


****  

| Problema | Sugerencias para la solución de problemas | 
| --- | --- | 
|  La opción de copia de seguridad y restauración de base de datos aún no está habilitada o está en proceso de habilitarse. Inténtelo de nuevo más tarde.  |  Asegúrese de haber agregado la opción `SQLSERVER_BACKUP_RESTORE` al grupo de opciones de base de datos asociado a la instancia de base de datos. Para obtener más información, consulte [Adición de opciones de copia de seguridad y restauración nativas](Appendix.SQLServer.Options.BackupRestore.md#Appendix.SQLServer.Options.BackupRestore.Add).  | 
|  Se ha denegado el permiso EXECUTE en el objeto “*rds\$1backup\$1database*”, base de datos “msdb”, esquema “dbo”.  |  Asegúrese de que está utilizando el usuario maestro al ejecutar el procedimiento almacenado. Si encuentra este error incluso después de iniciar sesión como usuario principal, puede deberse a que los permisos de usuario administrador no están alineados correctamente. Para restablecer el usuario maestro, utilice la Consola de administración de AWS. Consulte [Restablecimiento de la pertenencia al rol db\$1owner para el usuario maestro de Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).   | 
|  Se ha denegado el permiso EXECUTE en el objeto “*rds\$1restore\$1database*”, base de datos “msdb”, esquema “dbo”.  |  Asegúrese de que está utilizando el usuario maestro al ejecutar el procedimiento almacenado. Si encuentra este error incluso después de iniciar sesión como usuario principal, puede deberse a que los permisos de usuario administrador no están alineados correctamente. Para restablecer el usuario maestro, utilice la Consola de administración de AWS. Consulte [Restablecimiento de la pertenencia al rol db\$1owner para el usuario maestro de Amazon RDS para SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).   | 
|  Acceso denegado  | El proceso de copia de seguridad o restauración no puede acceder al archivo de copia de seguridad. Normalmente, esto se suele debe a problemas como el siguiente: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Troubleshooting.html)  | 
|  BACKUP BASE DE DATOS CON COMPRESIÓN no es compatible con la edición<edition\$1name>  |  La compresión de los archivos de copia de seguridad solo se admite para las ediciones Enterprise y Standard de Microsoft SQL Server. Para obtener más información, consulte [Compresión de archivos de copia de seguridad](SQLServer.Procedural.Importing.Native.Compression.md).   | 
|  La clave no existe<ARN>  |  Ha intentado restaurar una copia de seguridad cifrada, pero no ha proporcionado una clave de cifrado válida. Compruebe la clave de cifrado y vuelva a intentarlo. Para obtener más información, consulte [Restauración de una base de datos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Restore).   | 
|  Vuelva a emitir la tarea con el tipo correcto y sobrescribir la propiedad  |  Si intenta realizar una copia de seguridad de la base de datos e indica un nombre de archivo que ya existe, pero no ha establecido en 1 la propiedad de sobrescribir, la operación falla al guardar el archivo. Para solucionar este error, indique un nombre de archivo que no exista o establezca en 1 la propiedad de sobrescribir. Para obtener más información, consulte [Realización de copia de seguridad de una base de datos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Backup). También es posible que pretendiese restaurar la base de datos, pero que haya llamado al procedimiento almacenado `rds_backup_database` por error. En ese caso, llame al procedimiento almacenado `rds_restore_database` en su lugar. Para obtener más información, consulte [Restauración de una base de datos](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Restore). Si pretendía restaurar la base de datos y ha llamado al procedimiento almacenado `rds_restore_database`, asegúrese de que ha indicado un nombre de archivo de backup válido. Para obtener más información, consulte [Uso de la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Using.md).  | 
|  Especifique un depósito que se encuentra en la misma región que la instancia de RDS  |  No se puede realizar una copia de seguridad desde un bucket de Amazon S3 situado en una región de AWS que no coincida con la de la instancia de base de datos de Amazon RDS. Puede utilizar la reproducción de Amazon S3 para copiar el archivo de copia de seguridad en la región de AWS correcta. Para obtener más información, consulte [Replicación entre regiones](https://docs.aws.amazon.com/AmazonS3/latest/userguide/crr.html) en la documentación de Amazon S3.  | 
|  El bucket especificado no existe  | Compruebe que ha proporcionado el ARN correcto para el bucket y el archivo, y que el formato es correcto.  Para obtener más información, consulte [Uso de la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Using.md).  | 
|  El usuario no está autorizado a realizar en el recurso<ARN> <kms action> <ARN>  |  Ha solicitado una operación cifrada, pero no ha proporcionado los permisos de AWS KMS correctos. Compruebe que tiene los permisos correctos o añádalos.  Para obtener más información, consulte [Configuración de la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Enabling.md).  | 
|  La tarea Restaurar no puede restaurar desde más de 10 archivos de copia de seguridad). Reduzca el número de archivos coincidentes e inténtelo de nuevo.  |  Reduzca el número de archivos a partir de los cuales está intentando llevar a cabo la restauración. Puede agrandar cada archivo individual si es necesario.  | 
|  La base de datos "*database\$1name*" ya existe. No se permiten dos bases de datos que difieren solo por caso o acento. Elija un nombre de base de datos diferente.  |  No puede restaurar una base de datos si ya existe una base de datos SSAS con el mismo nombre. Los nombres de base de datos son únicos.  | 

# Importación y exportación de datos de SQL Server por otros métodos
<a name="SQLServer.Procedural.Importing.Snapshots"></a>

A continuación, puede encontrar información acerca del uso de instantáneas para importar sus datos de Microsoft SQL Server a Amazon RDS. También puede encontrar información sobre el uso de instantáneas para exportar sus datos desde una instancia de base de datos de RDS que ejecuta SQL Server. 

Si es posible en su situación concreta, lo más sencillo es importar y exportar los datos de Amazon RDS utilizando las funciones de backup y restauración nativas. Para obtener más información, consulte [Importación y exportación de bases de datos de SQL Server por copias de seguridad y restauración nativas](SQLServer.Procedural.Importing.md). 

**nota**  
Amazon RDS para Microsoft SQL Server no admite la importación de datos en la base de datos `msdb`. 

## Importación de datos a RDS para SQL Server utilizando una instantánea
<a name="SQLServer.Procedural.Importing.Procedure"></a>

**Para importar datos a una instancia de base de datos SQL Server utilizando una instantánea**

1. Cree una instancia de base de datos. Para obtener más información, consulte [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md).

1. Detenga el acceso de las aplicaciones a la instancia de base de datos de destino. 

   Si impide el acceso a la instancia de base de datos durante la importación, la transferencia de datos será más rápida. Además no tiene que preocuparse por que se produzcan conflictos durante la carga de datos si otras aplicaciones no pueden escribir al mismo tiempo en la instancia de base de datos. Si hay algún problema y es necesario volver a una instantánea anterior de la base de datos, los únicos cambios que se perderán serán los datos importados. Puede volver a importar estos datos tras resolver el problema. 

   Para obtener más información sobre el control del acceso a la instancia de base de datos, consulte [Control de acceso con grupos de seguridad](Overview.RDSSecurityGroups.md). 

1. Cree una instantánea de la base de datos de destino. 

   Si la base de datos de destino ya contiene datos, es recomendable obtener una instantánea de ella antes de importar nuevos datos. Si hay algún problema en la importación o desea descartar los cambios, podrá utilizar la instantánea para devolver a la base de datos su estado anterior. Para obtener más información acerca de la creación de instantáneas de base de datos, consulte [Creación de una instantánea de base de datos para una instancia de base de datos single-AZ para Amazon RDS](USER_CreateSnapshot.md). 
**nota**  
Al obtener una instantánea de base de datos, las operaciones de E/S de la base de datos se suspenden durante un momento (milisegundos), mientras se efectúa una copia de seguridad. 

1. Deshabilite los backups automatizados en la base de datos de destino. 

   La deshabilitación de los backups automatizados en la base de datos de destino mejora el rendimiento de la importación de datos, ya que con los backups automáticos deshabilitados Amazon RDS no registra las transacciones. Sin embargo, hay algunos aspectos que se deben considerar. Se precisa que las copias de seguridad automatizadas realicen una recuperación en un momento dado. Por lo tanto, no puede restaurar la base de datos a un momento específico mientras importa los datos. Además, las copias de seguridad automatizadas creadas en la instancia de base de datos se borran a no ser que elija conservarlos. 

   Optar por retener las copias de seguridad automatizadas puede ayudarlo a protegerse contra la eliminación accidental de datos. Amazon RDS también guarda las propiedades de instancia de base de datos junto con cada copia de seguridad automatizada para facilitar la recuperación. Esta opción le permite restaurar una instancia de base de datos eliminada a un momento específico dentro del periodo de retención de la copia de seguridad, incluso después de haberla eliminado. Las copias de seguridad automáticas, al igual que las de una instancia de base de datos activa, se eliminan automáticamente al final del período especificado. 

   También puede usar instantáneas anteriores para recuperar la base de datos, y las instantáneas que haya obtenido continúan disponibles. Para obtener información acerca de los backups automatizados, consulte [Introducción a las copias de seguridad](USER_WorkingWithAutomatedBackups.md). 

1. Deshabilite las restricciones de clave externa, en su caso. 

    Si es necesario deshabilitar las restricciones de clave externa, puede hacerlo con el script siguiente. 

   ```
   --Disable foreign keys on all tables
       DECLARE @table_name SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE table_cursor CURSOR FOR SELECT name FROM sys.tables;
       
       OPEN table_cursor;
       FETCH NEXT FROM table_cursor INTO @table_name;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         SELECT @cmd = 'ALTER TABLE '+QUOTENAME(@table_name)+' NOCHECK CONSTRAINT ALL';
         EXEC (@cmd);
         FETCH NEXT FROM table_cursor INTO @table_name;
       END
       
       CLOSE table_cursor;
       DEALLOCATE table_cursor;
       
       GO
   ```

1. Elimine los índices, en su caso. 

1. Deshabilite los disparadores, en su caso. 

    Si es necesario deshabilitar los disparadores, puede hacerlo con el script siguiente. 

   ```
   --Disable triggers on all tables
       DECLARE @enable BIT = 0;
       DECLARE @trigger SYSNAME;
       DECLARE @table SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE trigger_cursor CURSOR FOR SELECT trigger_object.name trigger_name,
        table_object.name table_name
       FROM sysobjects trigger_object
       JOIN sysobjects table_object ON trigger_object.parent_obj = table_object.id
       WHERE trigger_object.type = 'TR';
       
       OPEN trigger_cursor;
       FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         IF @enable = 1
            SET @cmd = 'ENABLE ';
         ELSE
            SET @cmd = 'DISABLE ';
       
         SET @cmd = @cmd + ' TRIGGER dbo.'+QUOTENAME(@trigger)+' ON dbo.'+QUOTENAME(@table)+' ';
         EXEC (@cmd);
         FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       END
       
       CLOSE trigger_cursor;
       DEALLOCATE trigger_cursor;
       
       GO
   ```

1. Consulte la instancia SQL Server de origen para determinar los nombres de inicio de sesión que desea importar a la instancia de base de datos de destino. 

   SQL Server almacena los nombres y contraseñas de inicio de sesión en la base de datos `master`. Amazon RDS no permite el acceso a la base de datos `master`, por lo que no es posible importar directamente los nombres y contraseñas de inicio de sesión en la instancia de base de datos de destino. En su lugar, debe consultar la base de datos `master` en la instancia SQL Server de origen para generar un archivo de lenguaje de definición de datos (DDL). Este archivo debería incluir todos los inicios de sesión y las contraseñas que desee añadir a la instancia de base de datos de destino. Este archivo también debería incluir las suscripciones y permisos de rol que desea transferir. 

   Para obtener información acerca de cómo consultar la base de datos `master`, consulte [Transferir inicios de sesión y contraseñas entre servidores SQL Server](https://learn.microsoft.com/en-us/troubleshoot/sql/database-engine/security/transfer-logins-passwords-between-instances) en Microsoft Knowledge Base.

   La salida del script es otro script que puede ejecutar en la instancia de base de datos de destino. El script del artículo de Knowledge Base contiene el código siguiente: 

   ```
   p.type IN 
   ```

   En todos los lugares donde aparezca `p.type`, sustitúyalo por el código siguiente: 

   ```
   p.type = 'S' 
   ```

1. Importe los datos siguiendo el método indicado en [Importación de los datos](#ImportData.SQLServer.Import). 

1. Conceda a las aplicaciones acceso a la instancia de base de datos de destino. 

   Cuando termine la importación de los datos, puede conceder acceso a la instancia de base de datos a las aplicaciones que bloqueó antes de la importación. Para obtener más información sobre el control del acceso a la instancia de base de datos, consulte [Control de acceso con grupos de seguridad](Overview.RDSSecurityGroups.md). 

1. Habilite los backups automatizados para la instancia de base de datos de destino. 

   Para obtener información acerca de los backups automatizados, consulte [Introducción a las copias de seguridad](USER_WorkingWithAutomatedBackups.md). 

1. Habilite las restricciones de clave externa. 

    Si antes deshabilitó las restricciones de clave externa, puede habilitarlas ahora con el script siguiente. 

   ```
   --Enable foreign keys on all tables
       DECLARE @table_name SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE table_cursor CURSOR FOR SELECT name FROM sys.tables;
       
       OPEN table_cursor;
       FETCH NEXT FROM table_cursor INTO @table_name;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         SELECT @cmd = 'ALTER TABLE '+QUOTENAME(@table_name)+' CHECK CONSTRAINT ALL';
         EXEC (@cmd);
         FETCH NEXT FROM table_cursor INTO @table_name;
       END
       
       CLOSE table_cursor;
       DEALLOCATE table_cursor;
   ```

1. Habilite los índices, en su caso.

1. Habilite los disparadores, en su caso.

    Si antes deshabilitó los disparadores, puede habilitarlos ahora con el script siguiente. 

   ```
   --Enable triggers on all tables
       DECLARE @enable BIT = 1;
       DECLARE @trigger SYSNAME;
       DECLARE @table SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE trigger_cursor CURSOR FOR SELECT trigger_object.name trigger_name,
        table_object.name table_name
       FROM sysobjects trigger_object
       JOIN sysobjects table_object ON trigger_object.parent_obj = table_object.id
       WHERE trigger_object.type = 'TR';
       
       OPEN trigger_cursor;
       FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         IF @enable = 1
            SET @cmd = 'ENABLE ';
         ELSE
            SET @cmd = 'DISABLE ';
       
         SET @cmd = @cmd + ' TRIGGER dbo.'+QUOTENAME(@trigger)+' ON dbo.'+QUOTENAME(@table)+' ';
         EXEC (@cmd);
         FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       END
       
       CLOSE trigger_cursor;
       DEALLOCATE trigger_cursor;
   ```

### Importación de los datos
<a name="ImportData.SQLServer.Import"></a>

Microsoft SQL Server Management Studio es un cliente SQL Server gráfico incluido en todas las ediciones de Microsoft SQL Server excepto Express Edition. Microsoft ofrece SQL Server Management Studio Express como descarga gratuita. Encontrará esta descarga en [el sitio web de Microsoft](https://www.microsoft.com/en-us/download). 

**nota**  
SQL Server Management Studio solo está disponible como aplicación basada en Windows.

SQL Server Management Studio incluye herramientas que resultan útiles para importar datos a una instancia de base de datos SQL Server: 
+ Asistente Generar y publicar scripts
+ Asistente para importación y exportación
+ Copia masiva

#### Asistente Generar y publicar scripts
<a name="ImportData.SQLServer.MgmtStudio.ScriptWizard"></a>

El asistente Generar y publicar scripts crea un script que contiene el esquema de una base de datos, los datos en sí, o ambos. Puede generar un script para una base de datos en su implementación SQL Server local. Puede ejecutar el script para que transfiera la información que contiene a una instancia de base de datos de Amazon RDS. 

**nota**  
Para las bases de datos de 1 GiB o más, es más eficiente generar scripts solo para el esquema de la base de datos. Puede utilizar el asistente para la Importación y Exportación o la característica de copia masiva de SQL Server para transferir los datos.

Para obtener información detallada acerca del asistente Generar y publicar scripts, consulte la [documentación de Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms178078%28v=sql.105%29.aspx). 

En el asistente, ponga especial atención en las opciones avanzadas de la página **Establecer opciones de scripting** para asegurarse de que esté seleccionado todo lo que desea incluir en el script. Por ejemplo, por defecto los disparadores de base de datos no se incluyen en el script.

Una vez generado y guardado el script, puede usar SQL Server Management Studio para conectar con la instancia de base de datos y ejecutarlo.

#### Asistente para importación y exportación
<a name="ImportData.SQLServer.MgmtStudio.ImportExportWizard"></a>

El Asistente para importación y exportación crea un paquete especial de servicios de integración que puede usar para copiar datos de la base de datos SQL Server local a la instancia de base de datos de destino. El asistente puede filtrar las tablas e incluso las tuplas de una tabla que se copian a la instancia de base de datos de destino.

**nota**  
El Asistente para importación y exportación funciona bien con conjuntos de datos grandes, pero puede no ser el modo más rápido para exportar datos desde una instalación local. Para conseguir una velocidad incluso mayor, considere utilizar la función de copia masiva de SQL Server.

Para obtener información detallada acerca del Asistente para importación y exportación, consulte la [ documentación de Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms140052%28v=sql.105%29.aspx).

En el asistente, en la página **Elegir un destino**, haga lo siguiente:
+ En **Nombre del servidor**, escriba el nombre del punto de conexión de la instancia de base de datos.
+ Elija **Utilizar autenticación de SQL Server** como modo de autenticación del servidor.
+ En **Nombre de usuario** y **Contraseña**, escriba las credenciales del usuario maestro que ha creado para la instancia de base de datos.

#### Copia masiva
<a name="ImportData.SQLServer.MgmtStudio.BulkCopy"></a>

La función de copia masiva de SQL Server es un modo eficiente de copiar datos de una base de datos de origen a una instancia de base de datos. La copia masiva escribe los datos que especifique en un archivo de datos, por ejemplo un archivo ASCII. A continuación puede ejecutar de nuevo la copia masiva para escribir el contenido del archivo en la instancia de base de datos de destino. 

En esta sección se utiliza la herramienta **bcp**, que se incluye en todas las ediciones de SQL Server. Para obtener información detallada acerca las operaciones de importación y exportación masivas, consulte [la documentación de Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms187042%28v=sql.105%29.aspx). 

**nota**  
Antes de usar la copia masiva, debe importar el esquema de base de datos en la instancia de base de datos de destino. El asistente Generar y publicar scripts, descrito anteriormente en este tema, es una herramienta excelente para hacerlo. 

El siguiente comando se conecta a la instancia SQL Server local. Genera un archivo delimitado por tabuladores a partir de una tabla especificada en el directorio C:\$1root de la instalación de SQL Server existente. La tabla se especifica por su nombre completo y el archivo de texto tiene el mismo nombre que la tabla que se copia. 

```
bcp dbname.schema_name.table_name out C:\table_name.txt -n -S localhost -U username -P password -b 10000 
```

En el código anterior se incluyen las opciones siguientes:
+ `-n` especifica que la copia masiva utiliza los tipos de datos nativos de los datos que se copian.
+ `-S` especifica la instancia SQL Server con la que conecta la utilidad *bcp*.
+ `-U` especifica el nombre de usuario de la cuenta que inicia sesión en la instancia de SQL Server.
+ `-P` especifica la contraseña del usuario indicado con `-U`.
+ `-b` especifica el número de filas en cada lote de datos importados.

**nota**  
Puede haber otros parámetros importantes para cada caso de importación. Por ejemplo, puede ser necesario el parámetro `-E`, que se refiere a los valores de identidad. Para obtener más información, consulte la descripción completa de la sintaxis de línea de comandos de la utilidad **bcp** en [la documentación de Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms162802%28v=sql.105%29.aspx). 

Por ejemplo, supongamos que una base de datos llamada `store` usa el esquema predeterminado `dbo` y contiene una tabla llamada `customers`. La cuenta de usuario `admin`, con la contraseña `insecure`, copia 10 000 filas de la tabla `customers` en un archivo llamado `customers.txt`. 

```
bcp store.dbo.customers out C:\customers.txt -n -S localhost -U admin -P insecure -b 10000 
```

Después de generar el archivo de datos, puede cargar los datos en su instancia de base de datos utilizando un comando similar. Previamente, cree la base de datos y el esquema en la instancia de base de datos de destino. Utilice el argumento `in` para especificar un archivo de entrada en lugar de `out` para especificar un archivo de salida. En lugar de especificar localhost para indicar la instancia SQL Server local, especifique el punto de conexión de la instancia de base de datos. Si usa un puerto distinto del 1433, también debe especificarlo. El nombre de usuario y la contraseña son los del usuario maestro de la instancia de base de datos. La sintaxis es la siguiente: 

```
bcp dbname.schema_name.table_name 
					in C:\table_name.txt -n -S endpoint,port -U master_user_name -P master_user_password -b 10000
```

Para continuar con el ejemplo anterior, supongamos que el nombre del usuario maestro es `admin` y que la contraseña es `insecure`. El punto de conexión de la instancia de base de datos es `rds.ckz2kqd4qsn1.us-east-1.rds.amazonaws.com` y se usa el puerto 4080. El comando es el siguiente: 

```
bcp store.dbo.customers in C:\customers.txt -n -S rds.ckz2kqd4qsn1.us-east-1.rds.amazonaws.com,4080 -U admin -P insecure -b 10000 
```

**nota**  
Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

## Exportación de datos de RDS para SQL Server
<a name="SQLServer.Procedural.Exporting"></a>

Se puede elegir una de las siguientes opciones para exportar datos desde una instancia de base de datos de RDS para SQL Server:
+ **Copia de seguridad de base de datos nativo con un archivo de copia de seguridad completo (.bak)**: el uso de archivos .bak para la copia de seguridad de bases de datos está muy optimizado y normalmente es la forma más rápida de exportar datos. Para obtener más información, consulte [Importación y exportación de bases de datos de SQL Server por copias de seguridad y restauración nativas](SQLServer.Procedural.Importing.md). 
+ **Asistente para importación y exportación de SQL Server**: para obtener más información, consulte [Asistente para importación y exportación de SQL Server](#SQLServer.Procedural.Exporting.SSIEW). 
+ **Asistente Generar y publicar scripts y utilidad bcp de SQL Server**: para obtener más información, consulte [Asistente Generar y publicar scripts de SQL Server y utilidad bcp](#SQLServer.Procedural.Exporting.SSGPSW). 

### Asistente para importación y exportación de SQL Server
<a name="SQLServer.Procedural.Exporting.SSIEW"></a>

Se puede utilizar el asistente para importación y exportación de SQL Server para copiar una o varias tablas, vistas o consultas de una instancia de base de datos RDS para SQL Server a otro almacén de datos. Esta es la mejor opción cuando el almacén de datos de destino no es SQL Server. Para obtener más información, consulte [ Asistente para importación y exportación de SQL Server](http://msdn.microsoft.com/en-us/library/ms141209%28v=sql.110%29.aspx) en la documentación de SQL Server. 

El asistente para importación y exportación de SQL Server está disponible como parte de SQL Server Management Studio. Es un cliente SQL Server gráfico incluido en todas las ediciones de Microsoft SQL Server excepto Express Edition. SQL Server Management Studio solo está disponible como aplicación basada en Windows. Microsoft ofrece SQL Server Management Studio Express como descarga gratuita. Encontrará esta descarga en [el sitio web de Microsoft](http://www.microsoft.com/en-us/search/Results.aspx?q=sql%20server%20management%20studio). 

**Para usar el Asistente para importación y exportación de SQL Server para exportar datos**

1. En SQL Server Management Studio, conéctese con la instancia de base de datos RDS para SQL Server. Para obtener más detalles sobre cómo hacerlo, consulte [Conexión a la instancia de base de datos de Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md). 

1. En el **Explorador de objetos**, expanda **Bases de datos**, abra el menú contextual (clic con el botón derecho) para la base de datos de origen, elija **Tareas** y, a continuación, elija **Exportar datos**. Aparecerá el asistente. 

1. En la página **Elija un origen de datos**, haga lo siguiente:

   1. Para **Origen de datos**, elija **SQL Server Native Client 11.0**. 

   1. Asegúrese de que el cuadro **Nombre del servidor** muestre el punto de conexión de la instancia de base de datos RDS para SQL Server.

   1. Seleccione **Utilizar autenticación de SQL Server**. En **Nombre de usuario** y **Contraseña**, escriba el nombre y la contraseña del usuario maestro de la instancia de la base de datos.

   1. Compruebe que en el cuadro **Base de datos** aparece la base de datos desde la que desea exportar datos.

   1. Elija **Siguiente**.

1. En la página **Elija un destino**, haga lo siguiente:

   1. Para **Destino**: elija **SQL Server Native Client 11.0**. 
**nota**  
Hay disponibles otros orígenes de datos de destino disponibles. Estos incluyen .NET Framework, clientes nativos SQL Server, ADO.NET, Microsoft Office Excel, Microsoft Office Access y el origen Archivo sin formato. Si elige como destino uno de estos orígenes de datos, omita el recordatorio del paso 4. Para obtener detalles la siguiente información de conexión que proporcionar, consulte [Elija un destino](http://msdn.microsoft.com/en-us/library/ms178430%28v=sql.110%29.aspx) en la documentación de SQL Server. 

   1. En **Nombre del servidor**, escriba el nombre del servidor de la instancia de base de datos SQL de destino. 

   1. Elija el tipo de autenticación adecuado. Escriba un nombre de usuario y una contraseña si es necesario. 

   1. En **Base de datos**, elija el nombre de la base de datos de destino, o bien elija **Nueva** para crear una base de datos nueva para contener los datos exportados. 

      Si elige **Nueva**, consulte [Crear base de datos](http://msdn.microsoft.com/en-us/library/ms183323%28v=sql.110%29.aspx) en la documentación de SQL Server para obtener detalles sobre la información de base de datos que debe proporcionar.

   1. Elija **Siguiente**.

1. En la página **Copia de tabla o consulta**, elija **Copiar los datos de una o más tablas o vistas** o **Escribir una consulta para especificar los datos que se van a transferir**. Elija **Siguiente**. 

1. Si elige **Escribir una consulta para especificar los datos que se van a transferir**, aparecerá la página **Proporcionar una consulta de origen**. Escriba o pegue una consulta SQL y, a continuación, elija **Analizar** para comprobarla. Una vez validada la consulta, elija **Siguiente**. 

1. En la página **Seleccionar tablas y vistas de origen**, haga lo siguiente:

   1. Seleccione las tablas y vistas que desea exportar o compruebe que está seleccionada la consulta que ha especificado.

   1. Elija **Editar asignaciones** y especifique la información de la base de datos y de asignación de columnas. Para obtener más información, consulte [Mapeos de columnas](http://msdn.microsoft.com/en-us/library/ms189660%28v=sql.110%29.aspx) en la documentación de SQL Server. 

   1. (Opcional) Para ver una vista previa de los datos que se van a exportar, seleccione la tabla, vista o consulta y elija **Vista previa**.

   1. Elija **Siguiente**.

1. En la página **Ejecutar paquete**, compruebe que está seleccionado **Ejecutar inmediatamente**. Elija **Siguiente**. 

1. En la página **Finalización del asistente**, compruebe que los detalles de la exportación de datos son los que espera. Seleccione **Finalizar**. 

1. En la página **Ejecución completada con éxito**, elija **Cerrar**. 

### Asistente Generar y publicar scripts de SQL Server y utilidad bcp
<a name="SQLServer.Procedural.Exporting.SSGPSW"></a>

Puede usar el asistente Generar y publicar scripts de SQL Server para crear scripts referidos a toda una base de datos o solo a objetos seleccionados. A continuación puede ejecutar esos scripts en una instancia de base de datos SQL Server de destino para volver a crear los objetos especificados. Entonces puede usar la herramienta bcp para una exportación masiva de los datos de los objetos seleccionados a la instancia de base de datos de destino, Esta es la mejor opción cuando se desea transferir una base de datos completa (incluyendo los objetos que no son tablas) o grandes cantidades de datos entre dos instancias de base de datos SQL Server. Para obtener una descripción completa de la sintaxis de línea de comandos de bcp, consulte [bcp (utilidad)](http://msdn.microsoft.com/en-us/library/ms162802%28v=sql.110%29.aspx) en la documentación de Microsoft SQL Server. 

El asistente Generar y publicar scripts de SQL Server está disponible como parte de SQL Server Management Studio. Es un cliente SQL Server gráfico incluido en todas las ediciones de Microsoft SQL Server excepto Express Edition. SQL Server Management Studio solo está disponible como aplicación basada en Windows. Microsoft ofrece SQL Server Management Studio Express como [descarga gratuita](http://www.microsoft.com/en-us/search/Results.aspx?q=sql%20server%20management%20studio). 

**Para usar el asistente Generar y publicar scripts y la utilidad bcp de SQL Server para exportar datos**

1. En SQL Server Management Studio, conéctese con la instancia de base de datos RDS para SQL Server. Para obtener más detalles sobre cómo hacerlo, consulte [Conexión a la instancia de base de datos de Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md). 

1. En el **Explorador de objetos**, expanda el nodo **Bases de datos** y seleccione la base de datos que desee incluir en el script. 

1. Siga las instrucciones indicadas en [Asistente Generar y publicar scripts](http://msdn.microsoft.com/en-us/library/bb895179%28v=sql.110%29.aspx) en la documentación de SQL Server para crear un archivo de script.

1. En SQL Server Management Studio, conecte con la instancia de base de datos SQL Server de destino.

1. Con la instancia de base de datos de SQL Server de destino seleccionada en **Object Explorer (Explorador de objetos)**, elija **Open (Abrir)** en el menú **File (Archivo)**, elija **File (Archivo)** y, luego, abra el archivo de script. 

1. Si ha realizado scripts en toda la base de datos, revise la instrucción CREATE DATABASE en el scripts. Asegúrese de que la base de datos se crea en la ubicación y con los parámetros que desea, Para obtener más información, consulte [CREATE DATABASE](http://msdn.microsoft.com/en-us/library/ms176061%28v=sql.110%29.aspx) en la documentación de SQL Server. 

1. Si va a crear usuarios de base de datos con el script, compruebe si los nombres de inicio de sesión en el servidor existen para esos usuarios en la instancia de base de datos. Si no existen, cree nombres de inicio de sesión para los usuarios. De no hacerlo, los comandos del script que crean los usuarios de base de datos generan un error. Para obtener más información, consulte [Crear un inicio de sesión](http://msdn.microsoft.com/en-us/library/aa337562%28v=sql.110%29.aspx) en la documentación de SQL Server.

1. Elija **\$1Ejecutar** en el menú del Editor SQL para ejecutar el archivo de script y crear los objetos de base de datos. Cuando termine el script, compruebe que existen todos los objetos de base de datos que esperaba.

1. Use la utilidad BCP para exportar datos de la instancia de base de datos RDS para SQL Server a archivos. Abra un símbolo del sistema y escriba el comando siguiente:

   ```
   bcp database_name.schema_name.table_name out data_file -n -S aws_rds_sql_endpoint -U username -P password
   ```

   En el código anterior se incluyen las opciones siguientes:
   + *table\$1name* es el nombre de una de las tablas que ha creado en la base de datos de destino y que ahora quiere rellenar con datos. 
   + *data\$1file* es la ruta completa y el nombre del archivo de datos que se va a crear.
   + `-n` especifica que la copia masiva utiliza los tipos de datos nativos de los datos que se copian.
   + `-S` especifica la instancia de base de datos SQL Server desde la que se exporta.
   + `-U` especifica el nombre de usuario empleado al conectar con la instancia de base de datos SQL Server.
   + `-P` especifica la contraseña del usuario indicado con `-U`.

   El siguiente es un ejemplo del comando . 

   ```
   bcp world.dbo.city out C:\Users\JohnDoe\city.dat -n -S sql-jdoe.1234abcd.us-west-2.rds.amazonaws.com,1433 -U JohnDoe -P ClearTextPassword
   ```

   Repita este paso hasta tener archivos de datos para todas las tablas que desea exportar. 

1. Prepare la instancia de base de datos de destino para la importación masiva de datos siguiendo las instrucciones indicadas en [Prepararse para importar datos de forma masiva](http://msdn.microsoft.com/en-us/library/ms189989%28v=sql.110%29.aspx) en la documentación de SQL Server. 

1. Para decidir el método de importación masiva a emplear, tenga en cuenta las consideraciones y aspectos expuestos en [Acerca de las operaciones de importación y exportación masivas](http://msdn.microsoft.com/en-us/library/ms187042%28v=sql.105%29.aspx) en la documentación de SQL Server. 

1. Importe de forma masiva los datos de los archivos de datos que ha creado utilizando la utilidad bcp. Para hacerlo, siga las instrucciones facilitadas en [Importar y exportar datos de forma masiva con la utilidad bcp](http://msdn.microsoft.com/en-us/library/aa337544%28v=sql.110%29.aspx) o en [Importar de forma masiva datos mediante BULK INSERT u OPENROWSET(BULK...)](http://msdn.microsoft.com/en-us/library/ms175915%28v=sql.110%29.aspx) en la documentación de SQL Server, dependiendo de lo que haya decidido en el paso 11. 

# Uso de la utilidad BCP de Linux para importar y exportar datos
<a name="SQLServer.Procedural.Importing.BCP.Linux"></a>

La utilidad BCP (Programa de copia masiva) proporciona una forma eficaz de transferir grandes cantidades de datos entre la instancia de base de datos de RDS para SQL Server y los archivos de datos. Puede utilizar BCP desde entornos de Linux para realizar operaciones de datos masivos, lo que lo hace útil para la migración de datos, los procesos de ETL y las transferencias de datos periódicas.

El BCP permite importar datos de archivos a tablas de SQL Server y exportar datos de tablas de SQL Server a archivos. Esto resulta especialmente eficaz para transferir datos estructurados en varios formatos, incluidos archivos de texto delimitado.

## Requisitos previos
<a name="SQLServer.Procedural.Importing.BCP.Linux.Prerequisites"></a>

Antes de usar BCP con la instancia de base de datos de RDS para SQL Server desde Linux, asegúrese de tener lo siguiente:
+ Un entorno de Linux con conectividad de red con la instancia de base de datos de RDS para SQL Server
+ Herramientas de línea de comandos de Microsoft SQL Server instaladas en el sistema Linux, que incluyen:
  + sqlcmd: herramienta de consulta de línea de comandos de SQL Server
  + bcp: utilidad del programa de copia masiva
+ Credenciales válidas para la instancia de base de datos de RDS para SQL Server
+ El acceso a la red se configura mediante grupos de seguridad para permitir las conexiones en el puerto de SQL Server (normalmente el 1433)
+ Permisos de base de datos adecuados para las operaciones que desea realizar

## Instalación de las herramientas de línea de comandos de SQL Server en Linux
<a name="SQLServer.Procedural.Importing.BCP.Linux.Installing"></a>

Para usar BCP desde Linux, debe instalar las herramientas de la línea de comandos de Microsoft SQL Server. Para obtener instrucciones de instalación detalladas para su distribución de Linux específica, consulte la siguiente documentación de Microsoft:
+ [Instalación de sqlcmd y bcp, las herramientas de línea de comandos de SQL Server, en Linux](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools)
+ [utilidad bcp](https://docs.microsoft.com/en-us/sql/tools/bcp-utility): referencia completa de la utilidad BCP

Tras la instalación, asegúrese de que las herramientas estén disponibles en su PATH ejecutando:

```
bcp -v
sqlcmd -?
```

## Exportación de datos de RDS para SQL Server
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting"></a>

Puede usar BCP para exportar datos de la instancia de base de datos de RDS para SQL Server a archivos en el sistema Linux. Esto resulta útil para crear copias de seguridad, analizar datos o preparar datos para la migración.

### Sintaxis básica de exportación
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting.Basic"></a>

La sintaxis básica para exportar datos mediante BCP es:

```
bcp database.schema.table out output_file -S server_name -U username -P password [options]
```

Donde:
+ `database.schema.table`: el nombre de la tabla cualificada completo
+ `output_file`: la ruta y el nombre del archivo de salida
+ `server_name`: el punto de conexión de RDS para SQL Server
+ `username`: el nombre de usuario de la base de datos
+ `password`: la contraseña de la base de datos

### Ejemplo de exportación
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting.Example"></a>

En el siguiente ejemplo, se exportan datos de una tabla denominada `customers` en la base de datos de `sales`:

```
bcp sales.dbo.customers out /home/user/customers.txt \
    -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \
    -U admin \
    -P mypassword \
    -c \
    -t "|" \
    -r "\n"
```

Este comando:
+ Exporta datos de la tabla de `customers`
+ Guarda el resultado en `/home/user/customers.txt`
+ Utiliza el formato de caracteres (`-c`)
+ Utiliza una barra vertical (\$1) como delimitador de campo (`-t "|"`)
+ Utiliza una nueva línea como delimitador de filas (`-r "\n"`)

## Importación de datos a RDS para SQL Server
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing"></a>

Puede usar BCP para importar datos de los archivos en el sistema Linux en la instancia de base de datos de RDS para SQL Server. Esto resulta útil para la migración de datos, la carga de datos de prueba o las actualizaciones de datos periódicas.

### Sintaxis básica de importación
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing.Basic"></a>

La sintaxis básica para importar datos mediante BCP es:

```
bcp database.schema.table in input_file -S server_name -U username -P password [options]
```

Donde:
+ `database.schema.table`: el nombre completo de la tabla de destino cualificada
+ `input_file`: la ruta y el nombre del archivo de entrada
+ `server_name`: el punto de conexión de RDS para SQL Server
+ `username`: el nombre de usuario de la base de datos
+ `password`: la contraseña de la base de datos

### Ejemplo de importación
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing.Example"></a>

En el siguiente ejemplo, se importan datos de un archivo a una tabla denominada `customers`:

```
bcp sales.dbo.customers in /home/user/customers.txt \
    -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \
    -U admin \
    -P mypassword \
    -c \
    -t "|" \
    -r "\n" \
    -b 1000
```

Este comando:
+ Importa datos en una tabla de `customers`
+ Lee datos de `/home/user/customers.txt`
+ Utiliza el formato de caracteres (`-c`)
+ Utiliza una barra vertical (\$1) como delimitador de campo (`-t "|"`)
+ Utiliza una nueva línea como delimitador de filas (`-r "\n"`)
+ Procesa los datos en lotes de 1000 filas (`-b 1000`)

## Opciones de BCP comunes
<a name="SQLServer.Procedural.Importing.BCP.Linux.Options"></a>

El BCP ofrece numerosas opciones para controlar el formato de los datos y el comportamiento de transferencia. En la tabla siguiente, se describen las opciones que suelen utilizarse:


| Opción | Descripción | 
| --- | --- | 
| -c | Utiliza el tipo de datos de caracteres para todas las columnas | 
| -n | Utiliza los tipos de datos de bases de datos nativos | 
| -t | Especifica el delimitador de campo (el predeterminado es pestaña) | 
| -r | Especifica el delimitador de filas (el predeterminado es nueva línea) | 
| -b | Especifica el tamaño del lote para las operaciones masivas | 
| -F | Especifica la primera fila para exportar o importar | 
| -L | Especifica la última fila para exportar o importar | 
| -e | Especifica un archivo de errores para capturar las filas rechazadas | 
| -f | Especifica un archivo de formato para dar formato a los datos | 
| -q | Utiliza identificadores entre comillas para los nombres de los objetos | 

## Prácticas recomendadas y consideraciones
<a name="SQLServer.Procedural.Importing.BCP.Linux.BestPractices"></a>

Al usar BCP con RDS para SQL Server desde Linux, tenga en cuenta las siguientes prácticas recomendadas:
+ **Use el procesamiento por lotes**: para conjuntos de datos grandes, utilice la `-b` opción para procesar los datos en lotes. Esto mejora el rendimiento y permite una mejor recuperación de errores.
+ **Gestione los errores sin problemas**: utilice la opción `-e` para capturar la información sobre los errores y las filas rechazadas en un archivo independiente para su análisis.
+ **Elija los formatos de datos adecuados**: utilice el formato de caracteres (`-c`) para garantizar la compatibilidad multiplataforma o el formato nativo (`-n`) para mejorar el rendimiento cuando el origen y el destino son SQL Server.
+ **Proteja sus credenciales**: evite poner las contraseñas directamente en las líneas de comandos. Considere la posibilidad de utilizar variables de entorno o archivos de configuración con los permisos adecuados.
+ **Realice pruebas con conjuntos de datos pequeños**: antes de procesar grandes cantidades de datos, pruebe los comandos de BCP con conjuntos de datos más pequeños para comprobar el formato y la conectividad.
+ **Supervise la conectividad de la red**: garantice conexiones de red estables, especialmente para transferencias de datos de gran tamaño. Considere la posibilidad de utilizar herramientas como `screen` o `tmux` para operaciones de larga duración.
+ **Valide la integridad de los datos**: después de la transferencia de datos, verifique el recuento de filas y los datos de ejemplo para garantizar que la operación se haya completado correctamente.

## Solución de problemas comunes de
<a name="SQLServer.Procedural.Importing.BCP.Linux.Troubleshooting"></a>

En la siguiente tabla se describen los problemas más comunes que puede encontrar al utilizar BCP desde Linux y sus soluciones:


| Problema | Solución | 
| --- | --- | 
| Tiempo de espera de conexión o errores de red | Compruebe el punto de conexión de Amazon RDS, la configuración del grupo de seguridad y la conectividad de red. Asegúrese de que el puerto de SQL Server (normalmente 1433) sea accesible desde el sistema Linux. | 
| Errores de autenticación | Verifique el nombre de usuario y la contraseña. Asegúrese de que el usuario de la base de datos tenga los permisos adecuados para las operaciones que está realizando. | 
| Errores de formato de datos | Compruebe los delimitadores de campos y filas. Asegúrese de que el formato de los datos coincida con lo que BCP espera. Utilice archivos de formato para estructuras de datos complejas. | 
| Errores de permiso denegado | Asegúrese de que el usuario de la base de datos tenga permisos INSERT para importaciones o permisos SELECT para exportaciones en las tablas de destino. | 
| Problemas de gestión de archivos grandes | Utilice el procesamiento por lotes con la opción -b. Considere la posibilidad de dividir los archivos grandes en fragmentos más pequeños para mejorar el rendimiento y la recuperación de errores. | 
| Problemas con la codificación de caracteres | Asegúrese de que los archivos de datos utilicen una codificación de caracteres compatible. Utilice la opción -c para el formato de caracteres o especifique las páginas de códigos adecuadas. | 