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 | Sí |
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:
- Compute Engine
- Cloud Storage
- Microsoft Windows and SQL server licenses
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
- Habilita la API de Compute Engine. Habilitar la API
Asegúrate de cumplir con estos requisitos previos adicionales:
- Debes usar el navegador Google Chrome.
- Instala un cliente de protocolo de escritorio remoto (RDP) que prefieras Para obtener más información, consulta Clientes de escritorio remoto de Microsoft. Si ya tienes instalado un cliente de RDP, puedes omitir esta tarea.
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.
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
En la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en Crear.
En el campo Nombre, escribe
sql-server-prod
.En Región, selecciona us-east1.
En Zona, selecciona us-east1-b.
En Configuración de la máquina, cambia el Tipo de máquina a n1-standard-2 (2 CPU virtuales).
Junto a la descripción Disco de arranque, haz clic en Cambiar.
En el panel Disco de arranque, haz clic en la pestaña Imágenes públicas.
En la lista desplegable Sistema operativo, selecciona SQL Server on Windows Server.
En la lista desplegable Versión, selecciona SQL Server 2022 Standard on Windows Server 2022 Datacenter.
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.
Haz clic en Seleccionar.
En Identidad y acceso a la API, configura Permisos de acceso como Permitir el acceso total a todas las API de Cloud.
Expande Administración, seguridad, discos, redes y usuario único.
Haz clic en la pestaña Discos.
Haz clic en Agregar disco nuevo add.
En el campo Nombre, escribe
sql-server-prod-data
.En el campo Tamaño (GB), escribe
100
.Haz clic en Listo.
Haz clic en Crear.
Cloud Shell
Abre Cloud Shell
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.
Establece tu ID del proyecto predeterminado:
gcloud config set project
PROJECT_ID
Reemplaza
PROJECT_ID
por el ID del proyecto de Google Cloud.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.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.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
En la consola de Google Cloud, ve a la página Instancias de VM.
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.
Haz clic en el nombre de la instancia
sql-server-prod
para abrir la página Detalles de instancia de VM.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.
En la sección Compute Engine de la consola de Google Cloud, haz clic en el menú desplegable RDP y selecciona la opción 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.
Cuando se te solicite, ingresa la contraseña que acabas de generar y, luego, haz clic en Aceptar.
Para aceptar el certificado del servidor y acceder a tu instancia remota de Windows, haz clic en Continuar.
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.
- 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, escribediskpart
y, luego, haz clic en diskpart para abrir DiskPart. - Cuando se te solicite que permitas que la app realice cambios, haz clic en Sí.
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.
Selecciona el disco de datos:
select disk 1
Inicializa el disco:
clean
Crea una tabla de particiones GUID:
convert gpt
Crea la partición de datos mediante el uso de todo el disco:
create partition primary
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.
Selecciona el volumen:
select volume 2
Da formato a la partición con el sistema de archivos NTFS y asígnale la etiqueta
data
:format quick fs=ntfs label=data
Activa el disco como unidad D:
assign letter=d
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:
- Crea una estructura de directorio en la unidad D (
data
) para almacenar tu base de datos. - Descarga el archivo de copia de seguridad completo de la base de datos de muestra de SQL Server de Wide World Importers. Esta base de datos simula ser la base de datos de producción que deseas clonar.
Para crear el directorio y descargar el archivo de copia de seguridad, sigue estos pasos:
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.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
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
- 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). - 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. - En el explorador de objetos, haz clic con el botón derecho en Bases de datos y, luego, selecciona Restaurar base de datos.
- En Origen, selecciona Dispositivo y haz clic en el botón […] junto al nombre del dispositivo.
- 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.
- En el selector de archivos, navega hasta
D:\sql-server-data
, haz clic en el archivoWideWorldImporters-Full.bak
y, luego, en Aceptar. 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.
En Seleccionar una página (Select a page), haz clic en Archivos (Files).
Selecciona la casilla de verificación Reubicar todos los archivos en la carpeta (Relocate all files to folder).
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
.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
- 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). - 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. - Selecciona Archivo > Nuevo > Consulta con conexión actual para abrir una ventana de consulta nueva.
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
.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 refresh 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.
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.
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.
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
Ve a la página Instancias de VM.
Haz clic en Crear.
En el campo Nombre, escribe
sql-server-test
.En Región, selecciona us-east1.
En Zona, selecciona us-east1-b.
En Configuración de la máquina, cambia el Tipo de máquina a n1-standard-2 (2 CPU virtuales).
Junto a la imagen de Disco de arranque, haz clic en Cambiar.
En el panel Disco de arranque, haz clic en la pestaña Imágenes públicas.
En la lista desplegable Sistema operativo, selecciona SQL Server on Windows Server.
En la lista desplegable Versión, selecciona SQL Server 2022 Standard on Windows Server 2022 Datacenter.
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.
Haz clic en Seleccionar.
En Identidad y acceso a la API, configura Alcance del acceso como Permitir el acceso total a todas las API de Cloud.
Haz clic en Crear.
Cloud Shell
Abre Cloud Shell
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
En la consola de Google Cloud, ve a la página Instancias de VM.
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.
Haz clic en el nombre de la instancia
sql-server-test
para que se muestra la página Detalles de instancia de VM.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.
En la sección Compute Engine de la consola de Google Cloud, haz clic en el menú desplegable RDP y selecciona la opción 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.
Cuando se te solicite, ingresa la contraseña que acabas de generar y, luego, haz clic en Aceptar.
Para aceptar el certificado del servidor y acceder a tu instancia remota de Windows, haz clic en Continuar.
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.
Crea la instantánea de disco
Console
En la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en el nombre de la instancia
sql-server-prod
.En la página Detalles de instancia de VM, haz clic en el disco
sql-server-prod-data
.Haz clic en Crear instantánea.
Asigna el nombre
sql-server-prod-data-snapshot
a la instantánea.En Ubicación, selecciona Regional.
Verifica que la región esté configurada como
us-east1
(la misma que la de tus instancias de VM).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.
Haz clic en Crear.
Después de unos minutos, se creará la instantánea.
Cloud Shell
Abre Cloud Shell
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.
En la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en el nombre de la instancia
sql-server-test
.En la página Detalles de la instancia de VM, haz clic en Editar.
Haz clic en Agregar disco nuevo add.
Asígnale el nombre
sql-server-test-data
al disco nuevo.En Tipo de origen, selecciona Instantánea.
En la instancia
sql-server-prod-data-snapshot
que creaste, selecciona la Instantánea de origen.Asegúrate de que Modo esté configurado como Lectura/escritura.
Haz clic en Listo.
Cloud Shell
Abre Cloud Shell
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}"
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:
- 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, escribediskpart
y, luego, haz clic en diskpart para abrir DiskPart. - Cuando se te solicite que permitas que la app realice cambios, haz clic en Sí.
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.
Selecciona el disco de datos:
select disk 1
Pon el disco en línea:
online disk
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.
Selecciona el volumen:
select volume 2
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.
Activa el volumen como unidad D:
assign letter=d
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.
- 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, escribecmd
. - Abre la app del símbolo del sistema como administrador.
Configura el propietario de los archivos de la carpeta
sql-server-data
como el usuario de servicioMSSQLSERVER
:icacls d:\sql-server-data /setowner "nt service\mssqlserver" /t
Restablece todos los permisos en todos los archivos de la carpeta de nivel superior
sql-server-data
:icacls d:\sql-server-data /reset /t
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
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
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
- 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, escribessms
y, luego, selecciona Microsoft SQL Server Management Studio (Ejecutar como administrador). - Haz clic en Conectar para conectarte al motor de la base de datos
sql-server-test
mediante la autenticación de Windows. - En el explorador de objetos, haz clic con el botón derecho en Bases de datos y, luego, selecciona Adjuntar.
- En el asistente Adjuntar bases de datos, haz clic en Agregar.
- Navega hasta el directorio
D:\sql-server-data\wideworldimporters
, haz clic en el archivoWideWorldImporters.mdf
y, luego, en Aceptar. 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 refresh en el explorador de objetos para ver si la base de datos se enumera en el árbol de las bases de datos.
Transact-SQL
- 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, escribessms
y, luego, selecciona Microsoft SQL Server Management Studio (Ejecutar como administrador). - Haz clic en Conectar para conectarte al motor de la base de datos
sql-server-prod
mediante la autenticación de Windows. - Selecciona Archivo > Nuevo > Consulta con conexión actual para abrir una ventana de consulta nueva.
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
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 refresh 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.
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.
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.
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
- 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 datossql-server-test
. - 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. - En el asistente Borrar objeto, asegúrate de que la casilla de verificación Close existing connections esté seleccionada.
- Haz clic en Aceptar.
Transact-SQL
- 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 datossql-server-test
. Para cerrar todas las conexiones a la base de datos
WideWorldImporters
y borrarla, copia la siguiente secuencia de comandos en una ventana de consulta nueva, haz clic con el botón derecho en el código y, luego, en Ejecutar:USE [master] GO ALTER DATABASE [WideWorldImporters] SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO DROP DATABASE [WideWorldImporters] GO
Una vez que se haya borrado la base de datos, puedes cerrar la ventana de consulta sin guardar. Puedes hacer clic en Actualizar refresh en el explorador de objetos para confirmar que se borró la base de datos.
Clona mediante copia de seguridad y restablecimiento
Un segundo método para clonar una base de datos de SQL Server que se ejecuta en Compute Engine consiste en usar la copia de seguridad y restablecimiento nativa de SQL Server. Si usas este enfoque, transfieres la copia de seguridad mediante Cloud Storage.
En esta sección del instructivo, se usan los recursos que creaste en la sección Clona la base de datos mediante instantáneas de disco de Compute Engine de este instructivo. Si no completaste esa sección, debes hacerlo antes de continuar.
En esta sección del instructivo, harás lo siguiente:
- Crearás un bucket de Cloud Storage.
- Crearás una copia de seguridad de la base de datos en el servidor de producción.
- Copiarás el archivo de copia de seguridad del servidor de producción en Cloud Storage.
- Copiarás el archivo de copia de seguridad desde Cloud Storage en el servidor de prueba.
- Restablecerás la copia de seguridad en la instancia de prueba.
En el siguiente diagrama, se muestra cómo se clona una base de datos mediante la transferencia de una copia de seguridad con Cloud Storage.
Debido a que los sistemas fuera de Google Cloud pueden tener acceso a Cloud Storage, puedes usar este enfoque para clonar bases de datos desde instancias externas de SQL Server.
Crea un bucket de Cloud Storage
Debes crear un depósito de Cloud Storage que almacene los archivos de copia de seguridad mientras los transfieres de la instancia sql-server-prod
a la instancia sql-server-test
.
Console
En la consola de Cloud, ve a la página Navegador de Cloud Storage.
Haz clic en Crear depósito.
Asigna el nombre
project-name
-depósito al depósito.Reemplaza lo siguiente:
project-name
: Es el ID de tu proyecto de Google Cloud.
Expande Elige una clase de almacenamiento predeterminada y, luego, selecciona Regional.
En Ubicación, selecciona us-east1.
Haz clic en Crear.
Cloud Shell
Abre Cloud Shell
Crea un bucket de Cloud Storage en la misma región que las instancias de VM:
gcloud storage buckets create "gs://$(gcloud config get-value project)-bucket" --location="${REGION}"
Realiza una copia de seguridad completa de un momento determinado de la base de datos
En tu entorno de producción, es posible que ya realices copias de seguridad. Puedes usar estas copias de seguridad como base para clonar tu base de datos. En este instructivo, realizarás una copia de seguridad de solo copia, de forma que no afecte ninguna programación existente de copias de seguridad completas o incrementales.
Asistente de SSMS
- En la sesión de RDP conectada a tu instancia
sql-server-prod
, abre Microsoft SQL Server Management Studio y, luego, conéctate al motor de la base de datossql-server-prod
. - En el explorador de objetos, expande Bases de datos, haz clic con el botón derecho en la base de datos
WorldWideImporters
y selecciona Tareas > Hacer una copia de seguridad. - En el asistente Copia de seguridad de base de datos (Back Up Database), asegúrate de que los siguientes valores estén configurados:
- El Tipo de copia de seguridad (Back Up type) está configurado como Completa (Full).
- Copy-only backup (Copia de seguridad de solo copia) está seleccionado.
- Back up to (Crear copia de seguridad en) está configurado como Disk (Disco).
- Para agregar un archivo de copia de seguridad, haz clic en Agregar (Add).
En el campo Destino (Destination), ingresa
D:\sql-server-data\WideWorldImporters-copy.bak
.Selecciona la página Opciones multimedia (Media Options) y, luego, Overwrite all existing backup sets.
Selecciona la página Opciones de copia de seguridad y, luego, cambia Establecer la compresión de copia de seguridad a Comprimir copia de seguridad.
Para crear la copia de seguridad, haz clic en Aceptar.
La copia de seguridad tardará unos minutos en crearse.
Transact-SQL
- En la sesión de RDP conectada a tu instancia
sql-server-prod
, abre Microsoft SQL Server Management Studio y, luego, conéctate al motor de la base de datossql-server-prod
. Para realizar una copia de seguridad comprimida de solo copia de la base de datos de
WideWorldImporters
en el archivo
d:\sql-server-data\WideWorldImporters-copy.bak
, copia la siguiente secuencia de comandos en una ventana de consulta nueva, haz clic con el botón derecho en el código y, luego, en Ejecutar.BACKUP DATABASE [WideWorldImporters] TO DISK = N'd:\sql-server-data\WideWorldImporters-copy.bak' WITH COPY_ONLY, NOFORMAT, INIT, NAME = N'WideWorldImporters-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10 GO
Espera unos minutos para que el servidor cree la copia de seguridad. Una vez que se haya completado la copia de seguridad de la base de datos, puedes cerrar la ventana de consulta sin guardar.
Copia el archivo de copia de seguridad en Cloud Storage
- En la sesión de RDP conectada a tu instancia
sql-server-prod
, abre una ventana de Windows PowerShell. Copia el archivo de copia de seguridad en el bucket de Cloud Storage que creaste antes:
gcloud storage cp d:\sql-server-data\WideWorldImporters-copy.bak "gs://$(gcloud config get-value project)-bucket/" --no-clobber
Sal de PowerShell.
exit
Copia el archivo de copia de seguridad de Cloud Storage en sql-server-test
- En la sesión de RDP conectada a tu instancia
sql-server-test
, abre una ventana de Windows PowerShell. Copia el archivo de copia de seguridad en el bucket de Cloud Storage que creaste antes:
gcloud storage cp "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" d:\sql-server-data\
Sal de PowerShell.
exit
Tu instancia de prueba ahora tiene la copia de seguridad completa de tu base de datos en su disco local.
Restablece la copia de seguridad
Ahora puedes restablecer la copia de seguridad completa en la unidad D (data
) de la instancia sql-server-test
.
Asistente de SSMS
- 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 datossql-server-test
. - En el explorador de objetos, haz clic con el botón derecho en Bases de datos y, luego, selecciona Restaurar base de datos.
- En Fuente, selecciona Dispositivo y, luego, haz clic en el botón […] junto al nombre del dispositivo.
- En el cuadro de diálogo Seleccionar dispositivos de copia de seguridad, selecciona Archivo en la lista Tipo de medio de copia de seguridad y, luego, haz clic en Agregar.
- En el selector de archivos, navega hasta
D:\sql-server-data
, haz clic en el archivoWideWorldImporters-copy.bak
y, luego, en Aceptar. 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
WideWorldImporters
.En Seleccionar una página (Select a page), haz clic en Archivos (Files).
Selecciona Reubicar todos los archivos en la carpeta (Relocate all files to folder).
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
.Para iniciar la operación de restablecimiento, haz clic en Aceptar.
Cuando finalice el proceso, verás el mensaje
Database 'WideWorldImporters' restored successfully
.
Transact-SQL
- 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 datossql-server-test
. - Selecciona Archivo > Nuevo > Consulta con conexión actual para abrir una ventana de consulta nueva.
Copia el siguiente comando de T-SQL para iniciar un restablecimiento desde el archivo de copia de seguridad que copiaste de Cloud Storage y restablecer la base de datos y el archivo de registro en el directorio
D:\sql-server-data\wideworldimporters
:USE [master] GO RESTORE DATABASE [WideWorldImporters] FROM DISK = N'D:\SQL-SERVER-DATA\WideWorldImporters-copy.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
Haz clic con el botón derecho en el código y, luego, en Ejecutar.
Después de unos minutos, se completará el restablecimiento de la base de datos. Puedes hacer clic en Actualizar refresh 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 se complete el restablecimiento de la base de datos, puedes cerrar la ventana de consulta sin guardar.
Para demostrar que la base de datos sea funcional, puedes ejecutar una consulta.
En Microsoft SQL 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.
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.
Usa Cloud SQL como destino de clonación
Si la base de datos de destino está alojada en Cloud SQL y la base de datos de origen se encuentra en Compute Engine, el único mecanismo admitido para realizar la clonación es exportar la base de datos a Cloud Storage y, luego, importarla a Cloud SQL.
Para este instructivo, vuelve a usar la copia de seguridad que creaste durante la sección anterior.
Crea una instancia de Cloud SQL para SQL Server.
Abra Cloud Shell.
Crea una instancia de Cloud SQL para SQL Server que ejecute la misma versión de la base de datos que tu instancia de
sql-server-prod
:gcloud sql instances create sqlserver-cloudsql \ --database-version=SQLSERVER_2022_STANDARD \ --cpu=2 \ --memory=5GB \ --root-password=sqlserver12@ \ --region=${REGION}
Esto crea una instancia con el usuario raíz de
sqlserver
con una contraseñasqlserver12@
.
Actualiza permisos de objetos
Los permisos correctos deben configurarse en el bucket de Cloud Storage y en el objeto de copia de seguridad para que la cuenta de servicio de Cloud SQL pueda leerlos.
Estos permisos se configuran de forma automática cuando usas la consola de Cloud para importar el objeto o puedes configurarlos con los comandos de gcloud
.
Abra Cloud Shell.
Configura una variable de entorno que contenga la dirección de la cuenta de servicio de la instancia de Cloud SQL:
CLOUDSQL_SA="$(gcloud sql instances describe sqlserver-cloudsql --format='get(serviceAccountEmailAddress)')"
Agrega la cuenta de servicio a la política de IAM del bucket como lector y escritor:
gcloud storage buckets add-iam-policy-binding "gs://$(gcloud config get-value project)-bucket/" \ --member=user:"${CLOUDSQL_SA}" --role=roles/storage.objectUser
Importa la base de datos exportada
Abre Cloud Shell
Importa el archivo exportado a tu instancia de Cloud SQL:
gcloud sql import bak sqlserver-cloudsql \ "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" \ --database WideWorldImporters
Cuando se te solicite, ingresa
y
.Instala el paquete de herramientas de SQL Server:
sudo apt install -y mssql-tools
Si aceptas los términos de la licencia, ingresa
yes
cuando se te solicite.Usa estas herramientas a fin de conectarte a Cloud SQL desde Cloud Shell para que puedas ejecutar consultas en la instancia de Cloud SQL.
Conecta el proxy de Cloud SQL a tu instancia de SQL Server:
CONNECTION_NAME=$(gcloud sql instances describe sqlserver-cloudsql --format='value(connectionName)') cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
Para verificar que la base de datos clonada funcione, ejecuta una consulta:
/opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q \ 'SELECT top(100) i.InvoiceDate, i.InvoiceID, i.CustomerID, LEFT(c.CustomerName,20) CustomerName, i.ConfirmedDeliveryTime, LEFT(i.ConfirmedReceivedBy,20) 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;'
Cuando se te solicite, ingresa la contraseña del usuario de
sqlserver
del servidor de base de datossqlserver-cloudsql
(sqlserver12@
).Mediante esta consulta, se recupera la información de resumen de las 100 facturas entregadas más recientes.
Este es el resultado:
InvoiceDate InvoiceID CustomerID CustomerName ConfirmedDeliveryTime ConfirmedReceivedBy ---------------- ----------- ----------- -------------------- -------------------------------------- -------------------- 2016-05-30 70349 581 Wingtip Toys (Munich 2016-05-31 07:05:00.0000000 Youssef Eriksson 2016-05-30 70350 123 Tailspin Toys (Roe P 2016-05-31 07:10:00.0000000 Ella Zvirbule 2016-05-30 70351 175 Tailspin Toys (San A 2016-05-31 07:15:00.0000000 Julio Correa 2016-05-30 70352 1029 Veronika Necesana 2016-05-31 07:20:00.0000000 Veronika Necesana 2016-05-30 70353 1014 Narendra Tickoo 2016-05-31 07:25:00.0000000 Narendra Tickoo 2016-05-30 70354 930 Shantanu Huq 2016-05-31 07:30:00.0000000 Shantanu Huq 2016-05-30 70355 963 Be Trang 2016-05-31 07:35:00.0000000 Be Trang 2016-05-30 70356 567 Wingtip Toys (Jerome 2016-05-31 07:40:00.0000000 Severins Polis 2016-05-30 70357 510 Wingtip Toys (Grabil 2016-05-31 07:45:00.0000000 Manish Ghosh ...
Limpia
Para evitar que se apliquen cargos a la cuenta de Google Cloud por los recursos que se usaron en este instructivo, puedes borrar el proyecto de Google Cloud que creaste para este instructivo.
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
¿Qué sigue?
- Obtén más información sobre las prácticas recomendadas para la ejecución de instancias de SQL Server en Compute Engine.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.