Exportar (0) Imprimir
Expandir todo

Procedimiento: Uso de la copia de base de datos (Base de datos SQL de Azure)

Actualizado: julio de 2014

Este tema explica cómo usar la copia de base de datos (DB Copy) para copiar su Base de datos SQL de Microsoft Azure. La nueva base de datos que se crea a partir del proceso de copia es una base de datos totalmente funcional e independiente de la base de datos de origen. La copia se crea con el mismo nivel de servicio y el nivel de rendimiento más bajo que la base de datos de origen. Para consultar todos los métodos y escenarios de copia de base de datos disponibles, vea Copiar bases de datos en Base de datos SQL de Azure.

En este tema

En la siguiente tabla se indican los métodos disponibles para crear una copia de una base de datos.

 

Método de copia Premium Standard Basic Business Web Entre servidores/entre regiones

Portal de administración de Azure

Solo permite la copia en el mismo servidor.

ImportantImportante
Vea la sección de restricciones que aparece a continuación para obtener más información.

Transact-SQL

(instrucción CREATE DATABASE con la cláusula AS COPY OF)

Se permite entre servidores, pero ambos servidores deberán estar en al misma región.

API de REST

Es compatible con la copia entre servidores y regiones. Para las bases de datos premium, tiene la opción de configurar una relación de replicación entre regiones que le permitirá mantener copias de la base de datos en servidores de distintas regiones geográficas. Para obtener más información, vea Available Methods to Copy a Database.

PowerShell

Es compatible con la copia entre servidores y regiones. Para las bases de datos premium, tiene la opción de configurar una relación de replicación entre regiones que le permitirá mantener copias de la base de datos en servidores de distintas regiones geográficas. Para obtener más información, vea Available Methods to Copy a Database.

  • Una región de Base de datos SQL de Azure puede estar formada por varios clústeres físicos. En la actualidad solo es posible copiar una base de datos entre dos clústeres distintos usando cmdlets de PowerShell o API REST. Asimismo, solo es posible copiar una base de datos entre dos suscripciones distintas usando Transact-SQL. Como parte de la administración de capacidad, es posible que Base de datos SQL de Azure traslade su servidor a otro clúster de forma periódica. No obstante, los servidores que pertenezcan a la misma suscripción se mantendrán juntos en el mismo clúster.

    Para determinar si es posible realizar una copia de la base de datos:  use un comando ping ("ping <server>") tanto en el servidor de origen como en el de destino para resolver las direcciones IP. Si las direcciones IP son iguales, se podrá realizar la copia de la base de datos. Para obtener más información, vea Uso del comando Ping.

  • La copia de las bases de datos se puede realizar mediante Transact-SQL, PowerShell la API de REST. No obstante, al usar Transact-SQL, únicamente es posible copiar entre distintos servidores dentro del mismo clúster. PowerShell y API REST admiten la copia en un servidor distinto en un clúster físico diferente.

La carga de trabajo derivada de la copia de la base de datos afecta al rendimiento de los servidores Base de datos SQL de Azure implicados en el proceso de copia. Por tanto, el proceso de copia puede requerir más tiempo para completarse. Si se produce un error durante la copia de la base de datos, reinicie el proceso cuando la demanda de la base de datos de origen sea escasa. Tal vez necesite suspender otras cargas de trabajo de la base de datos de origen hasta que el proceso de copia se complete.

Para copiar una base de datos con Transact-SQL, su inicio de sesión necesita los permisos siguientes:

  • En ambos servidores: el inicio de sesión debe tener el mismo nombre de inicio de sesión y la misma contraseña en ambos servidores Base de datos SQL de Azure.

  • En el servidor de destino: el inicio de sesión debe ser miembro del rol dbmanager de nivel de servidor. Nota: la entidad de seguridad de nivel de servidor del servidor Base de datos SQL de Azure no es miembro del rol dbmanager, pero tiene los mismos permisos automáticamente. Para obtener más información sobre cómo administrar inicios de sesión en Base de datos SQL de Azure, vea Administrar bases de datos e inicios de sesión en Base de datos SQL de Azure.

  • En el servidor de origen: el inicio de sesión debe ser el DBO de la base de datos de origen. Solo el inicio de sesión que creó la base de datos de origen, el DBO, o la entidad de seguridad de nivel de servidor pueden copiar la base de datos en otra.

Cuando se cumplen estos requisitos de permisos, su inicio de sesión puede ejecutar instrucciones Base de datos SQL de Azure ALTER DATABASE y DROP DATABASE en la nueva base de datos. Al copiar una base de datos con PowerShell o API REST, los permisos usan autenticación basada en certificados.

noteNota
Base de datos SQL de Azure no permite cambiar el propietario de la base de datos usando la instrucción ALTER AUTHORIZATION ON DATABASE. Puede crear usuarios adicionales dentro de la base de datos de Base de datos SQL de Azure y agregarlos al rol de nivel de base de datos db_owner. Estos usuarios adicionales se pueden vincular a un inicio de sesión distinto del inicio de sesión que creó la base de datos inicialmente. Sin embargo, estos usuarios adicionales no pueden realizar una copia de base de datos.

Cuota Premium: La operación de copia conserva el nivel de servicio y el rendimiento de la base de datos de origen. Al copiar una base de datos en el nivel de servicio Premium, asegúrese de que el servidor de destino tienen cuota Premium disponible. De lo contrario, se producirá un error en la operación.

ImportantImportante
La configuración de auditoría de la base de datos no se copia a la base de datos nueva. Si necesita realizar una auditoría en la base de datos nueva, debe habilitar esta funcionalidad una vez que la base de datos esté activa. Si la base de datos nueva está en la misma región que la original, puede usar la misma cuenta de almacenamiento de Azure. Si la base de datos nueva está en una región distinta de la original, deberá usar una cuenta de almacenamiento ubicada en la misma región que la base de datos nueva. Para obtener más información sobre las auditorías de las bases de datos Azure SQL, vea Auditoría de bases de datos.

Icono de flecha usado con el vínculo Volver al principio [Top]

  1. Inicie sesión en el Portal de administración de Azure con su cuenta Microsoft.

  2. Navegue hasta la pestaña BASES DE DATOS SQL.

  3. Seleccione la base de datos en la lista Bases de datos y haga clic en el botón Copiarde la barra de comandos en la parte inferior de la pantalla. Se abrirá el cuadro de diálogo copiar configuración de base de datos. Especifique un nombre para la base de datos nueva y haga clic en el botón de marca de verificación del cuadro de diálogo para iniciar la operación de copia.

  1. Inicie PowerShell y conéctese a la suscripción de Azure.

  2. Use el cmdlet Start-AzureSqlDatabaseCopy para crear una copia de la base de datos.

    Tenga en cuenta que, en este caso, no se usa el parámetro –ContinuousCopy de este cmdlet. Este parámetro solo se usa para configurar la replicación geográfica. Para obtener más información sobre la replicación geográfica, vea Continuidad de negocio de Base de datos SQL de Azure.

  3. Ejemplo de uso: Este ejemplo copia la base de datos "Orders" a la base de datos "Orders Copy". La base de datos original y la copia residen en el mismo servidor, "abc".

    PS C:\>Start-AzureSqlDatabaseCopy -ServerName "abc" -DatabaseName "Orders" -PartnerDatabase "Orders Copy"
    
    

  • Inicie sesión en la base de datos master utilizando el inicio de sesión de entidad de seguridad a nivel de servidor o el inicio de sesión que creó la base de datos que desea copiar. Los inicios de sesión que no son la entidad de seguridad de nivel de servidor deben ser miembros del rol dbmanager para poder copiar bases de datos. Para obtener más información sobre los inicios de sesión y la conexión al servidor, vea Administrar bases de datos e inicios de sesión en Base de datos SQL de Azure y Desarrollo de Base de datos SQL de Azure: Temas de procedimientos, respectivamente.

  • Empiece a copiar la base de datos de origen con la instrucción CREATE DATABASE. Al ejecutar esta instrucción, se inicia el proceso de copia de la base de datos. Como la copia de una base de datos es un proceso asincrónico, la instrucción CREATE DATABASE terminará antes de que se complete el proceso de copia.

  • Supervise el proceso de copia; para ello, consulte las vistas sys.databases y sys.dm_database_copies.

    • Durante el proceso de copia, la columna state_desc de la vista sys.databases de la nueva base de datos se establece en COPYING.

    • Si se produce un error en la copia, la columna state_desc de la vista sys.databases de la nueva base de datos se establecerá en SUSPECT. En este caso, ejecute la instrucción DROP en la nueva base de datos e inténtelo de nuevo más tarde.

    • Si la copia se realiza correctamente, la columna state_desc de la vista sys.databases de la nueva base de datos se establecerá en ONLINE. En este caso, la copia se ha completado y la nueva base de datos es una base de datos normal, que se puede modificar independientemente de la base de datos de origen.

  • (Opcional) Si decide cancelar la copia mientras está en curso, ejecute la instrucción DROP DATABASE en la nueva base de datos. La ejecución de la instrucción DROP DATABASE en la base de datos de origen también cancelará el proceso de copia.

En el ejemplo de código siguiente se inicia el proceso de copia de base de datos. En el ejemplo, la base de datos Database1A se copia en una nueva base de datos denominada Database1B del mismo servidor Base de datos SQL de Azure.

-- Execute on the master database.
-- Start copying.
CREATE DATABASE Database1B AS COPY OF Database1A;

Los ejemplos de código siguientes se pueden usar para supervisar el proceso de copia de la base de datos al consultar las vistas sys.databases y sys.dm_database_copies para obtener información sobre la nueva base de datos denominada Database1B.

-- Execute on the master database.
-- Retrieve state of the new database, Database1B.
SELECT name, state, state_desc FROM sys.databases WHERE name = 'Database1B'

ImportantImportante
La instrucción siguiente devuelve un conjunto de resultados solo mientras la copia está en curso. Una vez completada la copia y cuando la nueva base de datos esté en línea, esta consulta ya no devolverá ningún resultado.

-- Execute on the master database.
-- Retrieve copying details.
SELECT * FROM sys.dm_database_copies copies
Inner JOIN sys.databases databases ON copies.database_id = databases.database_id
      WHERE databases.name = 'Database1B';

Icono de flecha usado con el vínculo Volver al principio [Top]

  • Inicie sesión en la base de datos master del servidor de destino, que es el servidor Base de datos SQL de Azure donde se creará la nueva base de datos. Utilice un inicio de sesión que tenga el mismo nombre y la misma contraseña que el propietario de la base de datos (DBO) de origen del servidor Base de datos SQL de Azure de origen. El inicio de sesión del servidor de destino también deber ser miembro del rol dbmanager o ser el inicio de sesión de entidad de seguridad de nivel de servidor. Para obtener más información sobre los inicios de sesión y la conexión al servidor, vea Administrar bases de datos e inicios de sesión en Base de datos SQL de Azure y Desarrollo de Base de datos SQL de Azure: Temas de procedimientos, respectivamente.

  • Empiece a copiar la base de datos de origen con la instrucción CREATE DATABASE de Base de datos SQL de Azure. Al ejecutar esta instrucción en el servidor de destino se inicia el proceso de copia de la base de datos. Como la copia de una base de datos es un proceso asincrónico, la instrucción CREATE DATABASE terminará antes de que se complete el proceso de copia.

  • Supervise el proceso de copia; para ello, consulte las vistas sys.databases y sys.dm_database_copies.

    • Durante el proceso de copia, la columna state_desc de la vista sys.databases de la nueva base de datos se establece en COPYING.

    • Si se produce un error en la copia, la columna state_desc de la vista sys.databases de la nueva base de datos se establecerá en SUSPECT. En este caso, ejecute la instrucción DROP en la nueva base de datos e inténtelo de nuevo más tarde.

    • Si la copia se realiza correctamente, la columna state_desc de la vista sys.databases de la nueva base de datos se establecerá en ONLINE. En este caso, la copia se ha completado y la nueva base de datos es una base de datos normal, que se puede modificar independientemente de la base de datos de origen.

  • (Opcional) Si decide cancelar la copia mientras está en curso, ejecute la instrucción DROP DATABASE en la nueva base de datos. La ejecución de la instrucción DROP DATABASE en la base de datos de origen también cancelará el proceso de copia.

  • (Opcional) Una vez que la nueva base de datos esté en línea en el servidor de destino, utilice la instrucción ALTER USER para volver a asignar los usuarios de la nueva base de datos a inicios de sesión del servidor de destino. Todos los usuarios de la nueva base de datos mantienen los permisos que tenían en la base de datos de origen. El usuario que inició la copia de la base de datos se convierte en el propietario de la nueva base de datos y se le asigna un nuevo identificador de seguridad (SID). Después de que se complete la copia correctamente y antes de volver a asignar otros usuarios, solo el inicio de sesión que inició la copia, el propietario de la base de datos (DBO), podrá iniciar sesión en la nueva base de datos.

En el ejemplo de código siguiente se inicia el proceso de copia de base de datos desde bipk56ex. En el ejemplo se muestra cómo se copia la base de datos Database1A del servidor Base de datos SQL de Azure denominado vipk56ex5c en una nueva base de datos denominada Database2A de Server2.

-- Execute on the master database of bipk56ex
-- Start copying from Server1 to Server2
CREATE DATABASE Database2A AS COPY OF vipk56ex5c.Database1A;

En el ejemplo de código siguiente se supervisa el proceso de copia de base de datos. En el ejemplo, se consultan las vistas sys.databases y sys.dm_database_copies en Server2 para obtener información sobre la nueva base de datos denominada Database2A.

ImportantImportante
La instrucción siguiente devuelve un conjunto de resultados solo mientras la copia está en curso. Una vez completada la copia y cuando la nueva base de datos esté en línea, esta consulta ya no devolverá ningún resultado.

-- Execute on the master database.
-- Retrieve state of the new database, Database1B.
SELECT name, state, state_desc FROM sys.databases WHERE name = 'Database1B'

ImportantImportante
La instrucción siguiente devuelve un conjunto de resultados solo mientras la copia está en curso. Una vez completada la copia y cuando la nueva base de datos esté en línea, esta consulta ya no devolverá ningún resultado.

-- Execute on the master database.
-- Retrieve copying details.
SELECT * FROM sys.dm_database_copies copies
Inner JOIN sys.databases databases ON copies.database_id = databases.database_id
      WHERE databases.name = 'Database1B';

Icono de flecha usado con el vínculo Volver al principio [Top]

Si desea detener el proceso de copia antes de que se complete, puede usar la instrucción DROP DATABASE para quitar las bases de datos de destino. Para que esto funcione, use un inicio de sesión que cumpla los requisitos de permisos descritos en Permisos, al comienzo de este tema.

Icono de flecha usado con el vínculo Volver al principio [Top]

  • Cuando se completa la copia de la base de datos, la nueva base de datos adopta uno de los dos estados siguientes:

    • Si el proceso de copia se realizó correctamente, la nueva base de datos adopta el estado ONLINE. Cuando la nueva base de datos está en línea, se puede administrar y usar con independencia de la base de datos de origen.

    • Si se produce un error en el proceso de copia, la nueva base de datos adopta el estado SUSPECT. La base de datos sospechosa no está disponible. No se puede obtener acceso a ella ni puede recuperarse. En este caso, quite la base de datos de destino e intente copiar la base de datos de origen de nuevo.

    Para ver el estado, consulte la columna state_desc de la vista sys.databases.

  • Cuando la copia se completa, la nueva base de datos tiene el mismo nivel de servicio, el mismo nivel de rendimiento y el mismo tamaño máximo que la base de datos de origen. Para obtener información acerca de cómo se establece y se cambia el nivel de servicio o el nivel de rendimiento en Base de datos SQL de Azure, vea Modificación de niveles de servicio y de rendimiento de la base de datos.

  • Una vez completada la copia entre servidores, los inicios de sesión, usuarios y permisos de la copia se pueden administrar con independencia de la base de datos de origen. Utilice el inicio de sesión de DBO y la instrucción ALTER USER para establecer correspondencias entre los usuarios de la nueva base de datos y los inicios de sesión del servidor Base de datos SQL de Azure. Por ejemplo: ALTER USER userName WITH LOGIN='loginName'. Para obtener más información, vea ALTER USER (Base de datos SQL de Azure).

Icono de flecha usado con el vínculo Volver al principio [Top]

Vea también

Mostrar:
© 2014 Microsoft