Clona una base de datos de Microsoft SQL Server en Compute Engine


En este instructivo, se demuestran dos formas de clonar una base de datos de Microsoft SQL Server que se ejecuta en Compute Engine. En uno de los métodos, se usan instantáneas de disco persistente. En el otro, se usa la copia de seguridad y restablecimiento nativa de SQL Server y se la transfiere mediante Cloud Storage. Cloud Storage es el servicio de almacenamiento de objetos de Google Cloud. Ofrece una manera sencilla, duradera, más segura y con alta disponibilidad de almacenar archivos.

La clonación es el proceso de copiar una base de datos en línea en otro servidor. La copia es independiente de la base de datos existente y se conserva como una instantánea de un momento determinado. Puedes usar una base de datos clonada para varios fines, sin cargar el servidor de producción ni poner en riesgo la integridad de los datos de producción. Algunos de estos fines son los siguientes:

  • Realizar consultas analíticas
  • Realizar pruebas de carga o de integración de tus aplicaciones
  • Extraer datos para propagarlos en los almacenes de datos
  • Ejecutar experimentos en los datos

Cada método de clonación que se describe en este instructivo tiene ventajas y desventajas. El método ideal para ti depende de tu situación. En la siguiente tabla, se destacan algunos problemas clave.

Problema Método 1: instantáneas de disco Método 2: copia de seguridad y restablecimiento con Cloud Storage
Espacio en disco adicional necesario en las instancias de SQL Server No se necesita espacio de disco adicional Espacio adicional necesario para almacenar el archivo de copia de seguridad durante la creación y el restablecimiento
Carga adicional en instancias de SQL Server de origen durante la clonación Sin carga adicional Carga adicional en la CPU y la E/S cuando se crean y se suben archivos de copia de seguridad
Duración de la clonación Relativamente rápida para bases de datos grandes Relativamente lenta para bases de datos grandes
Posibilidad de clonar desde instancias de SQL Server externas a Google Cloud No
Complejidad Una secuencia de comandos compleja para conectar discos clonados Un conjunto de comandos relativamente sencillo para la clonación
Aprovechamiento de sistemas de copia de seguridad existentes Sí, si el sistema de copia de seguridad usa instantáneas de disco de Google Cloud Sí, si el sistema de copia de seguridad escribe archivos de copia de seguridad nativos de SQL Server en Cloud Storage
Nivel de detalle de la clonación Puede clonar solo discos completos Puede clonar solo la base de datos especificada
Coherencia de los datos Coherentes en el momento de la instantánea Coherentes en el momento de crear copia de seguridad

En este instructivo, se supone que estás familiarizado con la administración del sistema de Microsoft Windows, PowerShell y la administración de Microsoft SQL Server mediante Microsoft SQL Server Management Studio.

Objetivos

  • Aprender a ejecutar una instancia de SQL Server en Google Cloud
  • Aprender a crear una base de datos de demostración en un disco secundario
  • Aprender a clonar una base de datos de SQL Server mediante el uso de instantáneas de discos de Compute Engine
  • Aprender a clonar una base de datos de SQL Server mediante la transferencia de una copia de seguridad con Cloud Storage

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  6. Habilita la API de Compute Engine.
  7. Habilitar la API

Asegúrate de cumplir con estos requisitos previos adicionales:

Configura el entorno

Para completar este instructivo, debes configurar el entorno de computación con lo siguiente:

  • Una instancia de SQL Server en Compute Engine (llamada sql-server-prod) que represente el servidor de tu base de datos de producción
  • Un disco adicional (llamado sql-server-prod-data) que esté conectado al servidor de producción para almacenar la base de datos de producción
  • Una copia de la base de datos de muestra de SQL Server de World Wide Importers que simule ser la base de datos de producción que deseas clonar
  • Una instancia de SQL Server en Compute Engine llamada sql-server-test que represente el servidor de la base de datos de pruebas. Debes clonar la base de datos en este servidor

En el siguiente diagrama, se ilustra esta arquitectura.

Diagrama que muestra la configuración para clonar una base de datos de SQL Server en este instructivo.

Crea la instancia de VM de producción

Para simular un entorno de producción, debes configurar una instancia de VM de Compute Engine que ejecute SQL Server en Windows Server.

En la instancia de VM de este instructivo, se usan dos discos: uno de 50 GB para el SO y las cuentas de usuario, y otro de 100 GB para el almacenamiento de la base de datos.

En Compute Engine, el uso de discos independientes no ofrece beneficios en cuanto al rendimiento. El rendimiento del disco se determina por la capacidad de almacenamiento total de todos los discos conectados a una instancia y por la cantidad total de CPU virtuales en la instancia de VM. Por lo tanto, la base de datos y el archivo de registro pueden estar en el mismo disco.

Console

  1. En la consola de Google Cloud, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en Crear.

  3. En el campo Nombre, escribe sql-server-prod.

  4. En Región, selecciona us-east1.

  5. En Zona, selecciona us-east1-b.

  6. En Configuración de la máquina, cambia el Tipo de máquina a n1-standard-2 (2 CPU virtuales).

  7. Junto a la descripción Disco de arranque, haz clic en Cambiar.

  8. En el panel Disco de arranque, haz clic en la pestaña Imágenes públicas.

  9. En la lista desplegable Sistema operativo, selecciona SQL Server on Windows Server.

  10. En la lista desplegable Versión, selecciona SQL Server 2022 Standard on Windows Server 2022 Datacenter.

  11. Asegúrate de que estén establecidos los siguientes valores:

    • El Tipo de disco de arranque está configurado como Disco persistente estándar.
    • El tamaño (GB) está configurado en 50.
  12. Haz clic en Seleccionar.

  13. En Identidad y acceso a la API, configura Permisos de acceso como Permitir el acceso total a todas las API de Cloud.

  14. Expande Administración, seguridad, discos, redes y usuario único.

  15. Haz clic en la pestaña Discos.

  16. Haz clic en Agregar disco nuevo .

  17. En el campo Nombre, escribe sql-server-prod-data.

  18. En el campo Tamaño (GB), escribe 100.

  19. Haz clic en Listo.

  20. Haz clic en Crear.

Cloud Shell

  1. Abre Cloud Shell

    Abra Cloud Shell

  2. Inicializa las siguientes variables:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    Aquí:

    • VPC_NAME: Es el nombre de tu VPC.
    • SUBNET_NAME: Es el nombre de tu subred.
  3. Establece tu ID del proyecto predeterminado:

    gcloud config set project PROJECT_ID
    

    Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud.

  4. Configura la región predeterminada:

    gcloud config set compute/region REGION
    

    Reemplaza REGION por el ID de la región en la que deseas realizar la implementación.

  5. Establece la zona predeterminada:

    gcloud config set compute/zone ZONE
    

    Reemplaza ZONE por el ID de la zona en la que deseas realizar la implementación.

  6. Crea una instancia de Compute Engine mediante el uso de la imagen de la app para SQL Server 2022 Standard en Windows Server 2022 Datacenter:

    REGION=$(gcloud config get-value compute/region)
    ZONE=$(gcloud config get-value compute/zone)
    
    gcloud compute instances create sql-server-prod \
        --machine-type=n1-standard-2 \
        --scopes=cloud-platform \
        --image-family=sql-std-2022-win-2022 \
        --image-project=windows-sql-cloud \
        --boot-disk-size=50GB \
        --boot-disk-device-name=sql-server-prod \
        --create-disk="mode=rw,size=100,type=pd-standard,name=sql-server-prod-data,device-name=sql-server-prod-data" \
        --subnet=$SUBNET_NAME
    

    Con este comando, se le otorga a la instancia acceso completo a las API de Google Cloud, se crea un disco secundario de 100 GB y se conecta el disco a la instancia. Ignora la advertencia sobre el rendimiento del disco, ya que no necesitas un alto rendimiento para este instructivo.

Conéctate a la instancia de VM

  1. En Google Cloud Console, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Espera unos 5 minutos hasta que la instancia de VM esté lista.

    Para supervisar el proceso de inicialización de la VM, visualiza su salida de puerto en serie en Cloud Shell:

    gcloud compute instances tail-serial-port-output sql-server-prod
    

    Cuando veas el siguiente mensaje, la inicialización estará completa.

    Instance setup finished. sql-server-prod is ready to use.
    

    Presiona Control+C para detener la supervisión del puerto en serie.

  3. Haz clic en el nombre de la instancia sql-server-prod para abrir la página Detalles de instancia de VM.

  4. En Acceso remoto, haz clic en Configurar contraseña de Windows y, luego, en Configurar para crear una cuenta en la máquina remota.

    Con este paso, generas una contraseña. Toma nota de la contraseña o cópiala en un archivo temporal seguro.

  5. En la sección Compute Engine de la consola de Google Cloud, haz clic en el menú desplegable RDP y selecciona la opción Descargar el archivo RDP para descargar el archivo de RDP de tu instancia.

    Usa este archivo para conectarte a la instancia mediante un cliente de RDP. Para obtener más información, consulta Clientes de escritorio remoto de Microsoft.

  6. Cuando se te solicite, ingresa la contraseña que acabas de generar y, luego, haz clic en Aceptar.

  7. Para aceptar el certificado del servidor y acceder a tu instancia remota de Windows, haz clic en Continuar.

  8. Cuando se te pregunte si quieres que otras computadoras y dispositivos de la red puedan detectar tu computadora, haz clic en No.

Configura el disco adicional

El segundo disco conectado a la instancia de producción es para almacenar la base de datos de producción. Este disco está en blanco, por lo que debes particionarlo, formatearlo y activarlo.

  1. En una sesión de RDP conectada a tu instancia sql-server-prod, haz clic en el botón Iniciar de la barra de tareas de Windows, escribe diskpart y, luego, haz clic en diskpart para abrir DiskPart.
  2. Cuando se te solicite que permitas que la app realice cambios, haz clic en .
  3. Muestra una lista de los discos conectados a tu instancia con este comando:

    list disk
    

    Este es el resultado:

    Disk ###  Status         Size     Free     Dyn  Gpt
    --------  -------------  -------  -------  ---  ---
    Disk 0    Online           50 GB      0 B
    Disk 1    Online          100 GB   100 GB
    

    El disco 1 (100 GB) es tu disco de datos.

  4. Selecciona el disco de datos:

    select disk 1
    
  5. Inicializa el disco:

    clean
    
  6. Crea una tabla de particiones GUID:

    convert gpt
    
  7. Crea la partición de datos mediante el uso de todo el disco:

    create partition primary
    
  8. Enumera los volúmenes disponibles con este comando:

    list volume
    

    Este es el resultado:

    Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
    ----------  ---  -----------  -----  ----------  -------  ---------  --------
    Volume 0     C                NTFS   Partition     49 GB  Healthy    Boot
    Volume 1                      FAT32  Partition    100 MB  Healthy    System
    Volume 2                      RAW    Partition     99 GB  Healthy
    

    El volumen 2 (99 GB) es tu disco de datos.

  9. Selecciona el volumen:

    select volume 2
    
  10. Da formato a la partición con el sistema de archivos NTFS y asígnale la etiqueta data:

    format quick fs=ntfs label=data
    
  11. Activa el disco como unidad D:

    assign letter=d
    
  12. Sal de DiskPart:

    exit
    

Descarga la base de datos de muestra

Si deseas configurar tu entorno para este ejercicio de clonación, debes hacer lo siguiente:

Para crear el directorio y descargar el archivo de copia de seguridad, sigue estos pasos:

  1. En tu sesión de RDP, haz clic en el botón Iniciar de la barra de tareas de Windows, escribe PowerShell y, luego, selecciona la app de Windows PowerShell.

  2. Cuando recibas el mensaje de PowerShell, crea una estructura de directorio para el almacenamiento de la base de datos:

    mkdir D:\sql-server-data\wideworldimporters
    
  3. Descarga el archivo de copia de seguridad de la unidad D:

    bitsadmin /transfer sampledb /dynamic /download /priority FOREGROUND `
      https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak `
      D:\sql-server-data\WideWorldImporters-Full.bak
    

Restablece la base de datos de muestra

Debes restablecer la base de datos de muestra en la unidad D (data), ya sea de forma interactiva mediante los asistentes de Microsoft SQL Server Management Studio (SSMS) o de forma directa mediante la ejecución de un comando de Transact-SQL.

Asistente de SSMS

  1. En la sesión de RDP, haz clic en el botón Iniciar de la barra de tareas de Windows, escribe ssms y, luego, selecciona Microsoft SQL Server Management Studio (Ejecutar como administrador).
  2. Una vez que se inicie la app, haz clic en Conectar para conectarte al motor de la base de datos sql-server-prod mediante la autenticación de Windows.
  3. En el explorador de objetos, haz clic con el botón derecho en Bases de datos y, luego, selecciona Restaurar base de datos.
  4. En Origen, selecciona Dispositivo y haz clic en el botón […] junto al nombre del dispositivo.
  5. En el cuadro de diálogo Seleccionar dispositivos de copia de seguridad, asegúrate de que Archivo esté seleccionado para Tipo de medio de copia de seguridad y, luego, haz clic en Agregar.
  6. En el selector de archivos, navega hasta D:\sql-server-data, haz clic en el archivo WideWorldImporters-Full.bak y, luego, en Aceptar.
  7. Haz clic en Aceptar para cerrar el cuadro de diálogo Seleccionar dispositivos de copia de seguridad.

    Ahora, se propagará el cuadro de diálogo Restaurar base de datos (Restore Database) con datos sobre la copia de seguridad de la base de datos de Wide World Importers.

  8. En Seleccionar una página (Select a page), haz clic en Archivos (Files).

  9. Selecciona la casilla de verificación Reubicar todos los archivos en la carpeta (Relocate all files to folder).

  10. En los campos Carpeta de archivos de datos (Data file folder) y Carpeta de archivos de registro (Data file folder), ingresa D:\sql-server-data\wideworldimporters.

    Captura de pantalla en la que se muestra el cuadro de diálogo Restaurar base de datos.

  11. Haz clic en Aceptar para iniciar la operación de restablecimiento.

Después de unos de minutos, se te notificará que se restableció la base de datos.

Transact-SQL

  1. En la sesión de RDP, haz clic en el botón Iniciar de la barra de tareas de Windows, escribe ssms y, luego, selecciona Microsoft SQL Server Management Studio (Ejecutar como administrador).
  2. Una vez que se inicie la app, haz clic en Conectar para conectarte al motor de la base de datos sql-server-prod mediante la autenticación de Windows.
  3. Selecciona Archivo > Nuevo > Consulta con conexión actual para abrir una ventana de consulta nueva.
  4. Inicia un restablecimiento desde el archivo de copia de seguridad que descargaste:

    USE [master]
    GO
    
    RESTORE DATABASE [WideWorldImporters]
      FROM  DISK = N'D:\SQL-SERVER-DATA\WideWorldImporters-Full.bak'
      WITH  FILE = 1,
      MOVE N'WWI_Primary' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.mdf',
      MOVE N'WWI_UserData' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_UserData.ndf',
      MOVE N'WWI_Log' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters.ldf',
      MOVE N'WWI_InMemory_Data_1' TO
        N'D:\SQL-SERVER-DATA\WideWorldImporters\WideWorldImporters_InMemory_Data_1',
      NOUNLOAD,
      STATS = 5
    GO
    

    Mediante este comando, se restablece la base de datos y el archivo de registro en el directorio D:\sql-server-data\wideworldimporters.

  5. Haz clic con el botón derecho en el código de la consulta y, luego, en Ejecutar.

    Espera unos minutos hasta que se complete el restablecimiento de la base de datos. Puedes hacer clic en Actualizar en el explorador de objetos para ver si la base de datos se enumera en el árbol de las bases de datos. Una vez que finalice el restablecimiento de la base de datos, puedes cerrar la ventana de consulta sin guardar.

Para verificar que la base de datos de muestra sea funcional, puedes ejecutar una consulta.

  1. En Microsoft SQL Server Management Studio, selecciona Archivo > Nuevo > Consulta con conexión actual para abrir una ventana de consulta nueva y, luego, copia el siguiente código:

    SELECT top(100)
      i.InvoiceDate, i.InvoiceID, i.CustomerID, c.CustomerName,
      i.ConfirmedDeliveryTime, i.ConfirmedReceivedBy
    FROM
      WideWorldImporters.Sales.Invoices i
      JOIN WideWorldImporters.Sales.Customers c
      ON i.CustomerID=c.CustomerID
    WHERE i.ConfirmedDeliveryTime IS NOT NULL
    ORDER BY i.InvoiceDate desc;
    

    Mediante esta consulta, se recupera la información de resumen de las 100 facturas entregadas más recientes.

  2. Haz clic con el botón derecho en la ventana de consulta y, luego, en Ejecutar.

    En el panel Results (Resultados), se muestra la información del resumen.

    Captura de pantalla en la que se muestra el panel de resultados de una consulta a la base de datos de muestra.

Crea la instancia de VM de prueba

En esta sección, crearás una instancia de SQL Server llamada sql-server-test como el destino de la base de datos clonada. La configuración de esta instancia es idéntica a la instancia de producción. Sin embargo, no crearás un segundo disco de datos, en cambio, conectarás el disco de datos más adelante en este instructivo.

Console

  1. Ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en Crear.

  3. En el campo Nombre, escribe sql-server-test.

  4. En Región, selecciona us-east1.

  5. En Zona, selecciona us-east1-b.

  6. En Configuración de la máquina, cambia el Tipo de máquina a n1-standard-2 (2 CPU virtuales).

  7. Junto a la imagen de Disco de arranque, haz clic en Cambiar.

  8. En el panel Disco de arranque, haz clic en la pestaña Imágenes públicas.

  9. En la lista desplegable Sistema operativo, selecciona SQL Server on Windows Server.

  10. En la lista desplegable Versión, selecciona SQL Server 2022 Standard on Windows Server 2022 Datacenter.

  11. Asegúrate de que estén establecidos los siguientes valores:

    • El Tipo de disco de arranque está configurado como Disco persistente estándar.
    • El tamaño (GB) está configurado en 50.
  12. Haz clic en Seleccionar.

  13. En Identidad y acceso a la API, configura Alcance del acceso como Permitir el acceso total a todas las API de Cloud.

  14. Haz clic en Crear.

Cloud Shell

  1. Abre Cloud Shell

    Abra Cloud Shell

  2. Crea la instancia de prueba de SQL Server:

    gcloud compute instances create sql-server-test \
        --machine-type=n1-standard-2 \
        --scopes=cloud-platform \
        --image-family=sql-std-2022-win-2022 \
        --image-project=windows-sql-cloud \
        --boot-disk-size=50GB \
        --boot-disk-device-name=sql-server-test \
        --subnet=$SUBNET_NAME
    

    Puedes ignorar la advertencia de rendimiento del disco porque no necesitas un rendimiento alto para este instructivo.

Conéctate a la instancia de VM

  1. En Google Cloud Console, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Espera unos 5 minutos hasta que la instancia de VM esté lista.

    Para supervisar el proceso de inicialización de la VM, visualiza su salida de puerto en serie en Cloud Shell:

    gcloud compute instances tail-serial-port-output sql-server-prod
    

    Cuando veas el siguiente mensaje, la inicialización estará completa.

    Instance setup finished. sql-server-test is ready to use.
    

    Presiona Control+C para detener la supervisión del puerto en serie.

  3. Haz clic en el nombre de la instancia sql-server-test para que se muestra la página Detalles de instancia de VM.

  4. En Acceso remoto, haz clic en Configurar contraseña de Windows y, luego, en Configurar para crear una cuenta en la máquina remota.

    Con este paso, generas una contraseña. Toma nota de la contraseña o cópiala en un archivo temporal seguro.

  5. En la sección Compute Engine de la consola de Google Cloud, haz clic en el menú desplegable RDP y selecciona la opción Descargar el archivo RDP para descargar el archivo de RDP de tu instancia.

    Usa este archivo para conectarte a la instancia mediante un cliente de RDP. Para obtener más información, consulta Clientes de escritorio remoto de Microsoft.

  6. Cuando se te solicite, ingresa la contraseña que acabas de generar y, luego, haz clic en Aceptar.

  7. Para aceptar el certificado del servidor y acceder a tu instancia remota de Windows, haz clic en Continuar.

  8. Cuando se te pregunte si deseas que tu computadora de escritorio sea detectable, haz clic en No.

Clona la base de datos mediante instantáneas de disco de Compute Engine

Una forma de clonar una base de datos de SQL Server que se ejecuta en Compute Engine es almacenar la base de datos en un disco de datos separado y usar instantáneas de disco persistente para crear una clonación de ese disco.

Las instantáneas de disco persistente te permiten obtener una copia de un momento determinado de los datos en el disco. La programación de instantáneas de disco es una forma de crear copias de seguridad automáticas de los datos.

En esta sección del instructivo, harás lo siguiente:

  • Tomarás una instantánea del disco de datos del servidor de producción.
  • Crearás un disco nuevo a partir de la instantánea.
  • Activarás el disco nuevo en el servidor de prueba.
  • Conectarás la base de datos de este disco a SQL Server en la instancia de prueba.

En el siguiente diagrama, se muestra cómo se clona una base de datos mediante instantáneas de disco.

Diagrama que muestra la configuración para clonar una base de datos de SQL Server mediante instantáneas de disco.

Crea la instantánea de disco

Console

  1. En la consola de Google Cloud, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en el nombre de la instancia sql-server-prod.

  3. En la página Detalles de instancia de VM, haz clic en el disco sql-server-prod-data.

  4. Haz clic en Crear instantánea.

  5. Asigna el nombre sql-server-prod-data-snapshot a la instantánea.

  6. En Ubicación, selecciona Regional.

  7. Verifica que la región esté configurada como us-east1 (la misma que la de tus instancias de VM).

  8. Selecciona la opción Habilitar VSS.

    En esta opción, se usa el servicio de instantáneas de volumen de Microsoft Windows para crear una instantánea coherente.

  9. Haz clic en Crear.

    Después de unos minutos, se creará la instantánea.

Cloud Shell

  1. Abre Cloud Shell

    Abra Cloud Shell

  2. Crea una instantánea de tu disco de datos en la misma zona donde creaste la instancia de VM:

    gcloud compute disks snapshot sql-server-prod-data \
         --snapshot-names=sql-server-prod-data-snapshot \
         --guest-flush \
         --zone="${ZONE}"
    

    En la opción --guest-flush, se usa el servicio de instantáneas de volumen en Microsoft Windows para crear una instantánea coherente. Después de unos minutos, se creará la instantánea.

Conecta la instantánea de disco a la instancia de prueba

Debes crear un disco de datos nuevo a partir de la instantánea que creaste y, luego, conectarlo a la instancia sql-server-test.

Console

En los siguientes pasos, deberás crear un disco persistente nuevo, usar la instantánea del disco de producción para su contenido y, luego, conectar el disco a la instancia de prueba.

  1. En la consola de Google Cloud, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en el nombre de la instancia sql-server-test.

  3. En la página Detalles de la instancia de VM, haz clic en Editar.

  4. Haz clic en Agregar disco nuevo .

  5. Asígnale el nombre sql-server-test-data al disco nuevo.

  6. En Tipo de origen, selecciona Instantánea.

  7. En la instancia sql-server-prod-data-snapshot que creaste, selecciona la Instantánea de origen.

  8. Asegúrate de que Modo esté configurado como Lectura/escritura.

  9. Haz clic en Listo.

Cloud Shell

  1. Abre Cloud Shell

    Abra Cloud Shell

  2. Crea un disco persistente nuevo con la instantánea del disco de producción para el contenido:

    gcloud beta compute disks create sql-server-test-data \
         --size=100GB \
         --source-snapshot=sql-server-prod-data-snapshot \
         --zone="${ZONE}"
    
  3. Conecta el disco nuevo a la instancia sql-server-test con permisos de lectura y escritura:

    gcloud compute instances attach-disk sql-server-test \
        --disk=sql-server-test-data --mode=rw
    

Activa el disco de datos nuevo en Windows

El disco que creaste está conectado a la instancia de VM, pero se encuentra sin conexión, y el volumen está configurado como de solo lectura. Para configurar el volumen como de lectura y escritura, realiza los siguientes pasos:

  1. En la ventana del cliente de RDP que está conectado a tu instancia sql-server-test, haz clic en el botón Iniciar de la barra de tareas de Windows, escribe diskpart y, luego, haz clic en diskpart para abrir DiskPart.
  2. Cuando se te solicite que permitas que la app realice cambios, haz clic en .
  3. Muestra una lista de los discos conectados a tu instancia con este comando:

    list disk
    

    Este es el resultado:

    
    Disk ###  Status         Size     Free     Dyn  Gpt
    --------  -------------  -------  -------  ---  ---
    Disk 0    Online           50 GB      0 B
    Disk 1    Offline         100 GB      0 B       *
     

    Tu disco de datos (disco 1, 100 GB) está sin conexión.

  4. Selecciona el disco de datos:

    select disk 1
    
  5. Pon el disco en línea:

    online disk
    
  6. Enumera los volúmenes disponibles con este comando:

    list volume
    

    Este es el resultado:

    Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
    ----------  ---  -----------  -----  ----------  -------  ---------  --------
    Volume 0     C                NTFS   Partition     49 GB  Healthy    Boot
    Volume 1                      FAT32  Partition    100 MB  Healthy    System
    Volume 2                      RAW    Partition     99 GB  Healthy
    

    Volume 2 (volumen 2) (99 GB) es el volumen de tus datos. Se muestra como Hidden (Oculto) y sin una letra de unidad asignada.

  7. Selecciona el volumen:

    select volume 2
    
  8. Borra los atributos que se configuraron cuando creaste el volumen desde la instantánea:

    attr volume clear readonly hidden nodefaultdriveletter shadowcopy
    

    Con este comando, el volumen se puede activar.

  9. Activa el volumen como unidad D:

    assign letter=d
    
  10. Sal de DiskPart:

    exit
    

Restablece la propiedad del archivo y los permisos

Debido a que creaste el disco de datos mediante una instantánea en la instancia sql-server-prod, los ID del usuario de la propiedad y los permisos del archivo son diferentes a los de la instancia sql-server-test. Debes cambiar la propiedad de los archivos a un usuario de la instancia sql-server-test y actualizar los permisos para que los usuarios locales y el usuario MSSQLSERVER puedan leer los archivos.

  1. En la ventana del cliente de RDP conectado a tu instancia sql-server-test, haz clic en el botón Iniciar de la barra de tareas de Windows y, luego, escribe cmd.
  2. Abre la app del símbolo del sistema como administrador.
  3. Configura el propietario de los archivos de la carpeta sql-server-data como el usuario de servicio MSSQLSERVER:

    icacls d:\sql-server-data /setowner "nt service\mssqlserver" /t
    
  4. Restablece todos los permisos en todos los archivos de la carpeta de nivel superior sql-server-data:

    icacls d:\sql-server-data /reset /t
    
  5. Actualiza las listas de control de acceso (LCA) para la carpeta sql-server-data:

    icacls d:\sql-server-data /grant Administrators:(oi)(ci)f "nt service\mssqlserver":(oi)(ci)f "owner rights":(oi)(ci)f  %USERNAME%:(oi)(ci)f
    
  6. Inhabilita la herencia de la carpeta raíz de la unidad, de forma que solo se apliquen los permisos anteriores:

    icacls d:\sql-server-data /inheritancelevel:r
    
  7. Sal de la app del símbolo del sistema:

    exit
    

Ahora, la instancia de SQL Server y el usuario local de la instancia sql-server-test podrán acceder a los archivos de la base de datos.

Conecta la base de datos clonada

Ahora debes conectar la base de datos clonada en la unidad D (data) a la instancia de prueba de SQL Server. Puedes conectar la base de datos de forma interactiva mediante los asistentes de Microsoft SQL Server Management Studio o directamente mediante la ejecución de un comando de Transact-SQL.

Asistente de SSMS

  1. En la sesión de RDP conectada a tu instancia de sql-server-test, haz clic en el botón Inicio en la barra de tareas de Windows, escribe ssms y, luego, selecciona Microsoft SQL Server Management Studio (Ejecutar como administrador).
  2. Haz clic en Conectar para conectarte al motor de la base de datos sql-server-test mediante la autenticación de Windows.
  3. En el explorador de objetos, haz clic con el botón derecho en Bases de datos y, luego, selecciona Adjuntar.
  4. En el asistente Adjuntar bases de datos, haz clic en Agregar.
  5. Navega hasta el directorio D:\sql-server-data\wideworldimporters, haz clic en el archivo WideWorldImporters.mdf y, luego, en Aceptar.
  6. Haz clic en Aceptar para conectar la base de datos.

    Luego de unos minutos, se conectará la base de datos clonada. Puedes hacer clic en Actualizar  en el explorador de objetos para ver si la base de datos se enumera en el árbol de las bases de datos.

Transact-SQL

  1. En una sesión de RDP conectada a tu instancia de sql-server-test, haz clic en el botón Inicio en la barra de tareas de Windows, escribe ssms y, luego, selecciona Microsoft SQL Server Management Studio (Ejecutar como administrador).
  2. Haz clic en Conectar para conectarte al motor de la base de datos sql-server-prod mediante la autenticación de Windows.
  3. Selecciona Archivo > Nuevo > Consulta con conexión actual para abrir una ventana de consulta nueva.
  4. Adjunta los datos y los archivos de registro en el directorio D:\sql-server-data\wideworldimporters:

    USE [master]
    GO
    
    CREATE DATABASE [WideWorldImporters] ON
    ( FILENAME = N'D:\sql-server-data\wideworldimporters\WideWorldImporters.mdf' ),
    ( FILENAME = N'D:\sql-server-data\wideworldimporters\WideWorldImporters.ldf' ),
    ( FILENAME = N'D:\sql-server-data\wideworldimporters\WideWorldImporters_UserData.ndf' )
     FOR ATTACH
    GO
    
  5. Haz clic con el botón derecho en el código de la consulta y, luego, en Ejecutar.

    Luego de unos minutos, se conectará la base de datos clonada. Puedes hacer clic en Actualizar  en el explorador de objetos para ver si la base de datos se enumera en el árbol de las bases de datos. Una vez que la base de datos esté conectada, puedes cerrar la ventana de consulta sin guardar.

Para verificar que la base de datos de muestra sea funcional, puedes ejecutar una consulta.

  1. En SQL Server Management Studio, selecciona Archivo > Nuevo > Consulta con conexión actual para abrir una ventana de consulta nueva y, luego, copia el siguiente código:

    SELECT top(100)
      i.InvoiceDate, i.InvoiceID, i.CustomerID, c.CustomerName,
      i.ConfirmedDeliveryTime, i.ConfirmedReceivedBy
    FROM
      WideWorldImporters.Sales.Invoices i
      JOIN WideWorldImporters.Sales.Customers c
      ON i.CustomerID=c.CustomerID
    WHERE i.ConfirmedDeliveryTime IS NOT NULL
    ORDER BY i.InvoiceDate desc;
    

    Mediante esta consulta, se recupera la información de resumen de las 100 facturas entregadas más recientes.

  2. Para ejecutar la consulta, haz clic con el botón derecho en la ventana de consulta y, luego, selecciona Ejecutar.

    En el panel Resultados (Results), se muestra la información de resumen.

    Captura de pantalla en la que se muestra el panel de resultados de una consulta a la base de datos de muestra.

Ahora que ya sabes cómo clonar una base de datos mediante el uso de instantáneas de discos persistentes, te recomendamos que intentes clonar una base de datos por medio de una copia de seguridad y restablecimiento. Para completar el instructivo de este segundo método, debes borrar la base de datos que clonaste desde la instancia sql-server-test.

Borra la base de datos clonada

Para borrar la base de datos clonada que creaste mediante las instantáneas de discos, realiza los siguientes pasos.

Asistente de SSMS

  1. En la sesión de RDP conectada a tu instancia sql-server-test, abre Microsoft SQL Server Management Studio y, luego, conéctate al motor de la base de datos sql-server-test.
  2. En el explorador de objetos, expande Bases de datos, haz clic con el botón derecho en la base de datos WorldWideImporters y, luego, selecciona Eliminar.
  3. En el asistente Borrar objeto, asegúrate de que la casilla de verificación Close existing connections esté seleccionada.
  4. Haz clic en Aceptar.

Transact-SQL

  1. En la sesión de RDP conectada a tu instancia sql-server-test, abre Microsoft SQL Server Management Studio y, luego, conéctate al motor de la base de datos sql-server-test.
  2. Para cerrar todas las conexiones a la base de datos