Este tutorial muestra dos formas de clonar una base de datos de Microsoft SQL Server que se ejecuta en Compute Engine. Un método utiliza instantáneas de disco persistentes . El otro método utiliza la copia de seguridad y restauración nativa de SQL Server, transfiriendo la copia de seguridad mediante Cloud Storage . El almacenamiento en la nube es Google CloudServicio de almacenamiento de objetos. Ofrece una forma sencilla, de seguridad mejorada, duradera y de 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. Puede utilizar una base de datos clonada para diversos fines sin sobrecargar el servidor de producción ni poner en riesgo la integridad de los datos de producción. Algunos de estos propósitos incluyen los siguientes:
- Realizar consultas analíticas
- Pruebas de carga o pruebas de integración de sus aplicaciones
- Extracción de datos para poblar almacenes de datos.
- Realizar experimentos con los datos.
Cada método de clonación descrito en este tutorial tiene ventajas y desventajas. El método ideal para usted depende de su situación. La siguiente tabla destaca algunas cuestiones clave.
Asunto | Método 1: instantáneas de disco | Método 2: realizar una copia de seguridad y restaurar usando Cloud Storage |
---|---|---|
Se requiere espacio en disco adicional en instancias de SQL Server | No se requiere espacio adicional en disco | Espacio adicional necesario para almacenar el archivo de copia de seguridad al crear y restaurar |
Carga adicional en instancias de SQL Server de origen durante la clonación | Sin carga adicional | Carga adicional en CPU y E/S al crear y cargar archivos de respaldo |
Duración de la clonación | Relativamente rápido para bases de datos grandes | Relativamente lento para bases de datos grandes |
Puede clonar desde instancias de SQL Server externas aGoogle Cloud | No | Sí |
Complejidad | Una secuencia compleja de comandos para conectar discos clonados | Un conjunto de comandos relativamente sencillo para clonar |
Puede aprovechar los sistemas de respaldo existentes | Sí, si el sistema de respaldo usa Google Cloud instantáneas de disco | Sí, si el sistema de respaldo escribe archivos de respaldo nativos de SQL Server en Cloud Storage |
Granularidad de la clonación | Puede clonar sólo discos completos | Puede clonar solo la base de datos especificada |
Coherencia de los datos | Consistente en el punto de la instantánea | Consistente en el punto de respaldo |
Este tutorial asume que está familiarizado con la administración del sistema Microsoft Windows , PowerShell y la administración de Microsoft SQL Server mediante Microsoft SQL Server Management Studio .
Objetivos
- Aprenda a ejecutar una instancia de SQL Server en Google Cloud.
- Aprenda a crear una base de datos de demostración en un disco secundario.
- Aprenda a clonar una base de datos de SQL Server usando instantáneas de disco de Compute Engine .
- Aprenda a clonar una base de datos de SQL Server transfiriendo una copia de seguridad mediante 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
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Habilite la API de Compute Engine. Habilitar la API
Asegúrese de cumplir estos requisitos previos adicionales:
- Utiliza el navegador Google Chrome .
- Instale un cliente de Protocolo de escritorio remoto (RDP) de su elección. Para obtener más información, consulte Clientes de escritorio remoto de Microsoft . Si ya tiene un cliente RDP instalado, puede omitir esta tarea.
Configurando el ambiente
Para completar este tutorial, necesita configurar su entorno informático con lo siguiente:
- Una instancia de SQL Server en Compute Engine (llamada
sql-server-prod
) para representar su servidor de base de datos de producción. - Un disco adicional (llamado
sql-server-prod-data
) que está conectado a su servidor de producción para almacenar su base de datos de producción. - Una copia de la base de datos de muestra de SQL Server de Wide World Importers para simular la base de datos de producción que desea clonar.
- Una instancia de SQL Server en Compute Engine denominada
sql-server-test
para representar su servidor de base de datos de prueba. Clonas tu base de datos en este servidor.
El siguiente diagrama ilustra esta arquitectura.
Crear la instancia de VM de producción
Para simular un entorno de producción, configura una instancia de VM de Compute Engine que ejecuta SQL Server en Windows Server.
La instancia de VM para este tutorial utiliza dos discos: un disco de 50 GB para el sistema operativo y las cuentas de usuario, y un disco de 100 GB para el almacenamiento de la base de datos.
En Compute Engine, el uso de discos separados no ofrece beneficios de rendimiento . El rendimiento del disco está determinado por la capacidad de almacenamiento total de todos los discos conectados a una instancia y la cantidad total de vCPU en su instancia de VM. Por lo tanto, la base de datos y el archivo de registro pueden residir en el mismo disco.
Consola
En la consola de Google Cloud, vaya a la página de instancias de VM .
Haga clic en Crear .
En el campo Nombre , escriba
sql-server-prod
.Para Región , seleccione us-east1 .
Para Zona , seleccione us-east1-b .
En Configuración de la máquina , cambie el tipo de máquina a n1-estándar-2 (2 vCPU).
Junto a la descripción del disco de arranque , haga clic en Cambiar .
En el panel Disco de arranque , haga clic en la pestaña Imágenes públicas .
En la lista desplegable Sistema operativo , seleccione SQL Server en Windows Server .
En la lista desplegable Versión , seleccione SQL Server 2022 Standard en Windows Server 2022 Datacenter .
Asegúrese de que estén establecidos los siguientes valores:
- El tipo de disco de arranque está configurado en Disco persistente estándar .
- El tamaño (GB) está establecido en 50 .
Haga clic en Seleccionar .
En Identidad y acceso a API , establezca Ámbitos de acceso en Permitir acceso completo a todas las API de la nube .
Expanda Administración, seguridad, discos, redes, arrendamiento exclusivo .
Haga clic en la pestaña Discos .
Haga clic en add nuevo disco .
En el campo Nombre , escriba
sql-server-prod-data
.En el campo Tamaño (GB) , escriba
100
.Haga clic en Listo .
Haga clic en Crear .
Concha de nube
Abra Cloud Shell.
Inicialice las siguientes variables:
VPC_NAME=
VPC_NAME
SUBNET_NAME=SUBNET_NAME
Dónde:
-
VPC_NAME
: nombre de su VPC -
SUBNET_NAME
: nombre de tu subred
-
Establece tu ID de proyecto predeterminado:
gcloud config set project
PROJECT_ID
Reemplace
PROJECT_ID
con el ID de su proyecto de Google Cloud.Establece tu región predeterminada:
gcloud config set compute/region
REGION
Reemplace
REGION
con el ID de la región en la que desea implementar.Establece tu zona predeterminada:
gcloud config set compute/zone
ZONE
Reemplace
ZONE
con el ID de la zona en la que desea implementar.Cree una instancia de Compute Engine usando la imagen de la aplicación 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
Este comando otorga a la instancia acceso completo a Google Cloud API, crea un disco secundario de 100 GB y conecta el disco a la instancia. Ignore la advertencia de rendimiento del disco porque no necesita un alto rendimiento para este tutorial.
Conéctese a la instancia de VM
En la consola de Google Cloud, vaya a la página de instancias de VM .
Espere unos 5 minutos hasta que la instancia de VM esté lista.
Para monitorear el proceso de inicialización de la VM, vea la salida del puerto serie en Cloud Shell:
gcloud compute instances tail-serial-port-output sql-server-prod
Cuando vea el siguiente mensaje, la inicialización se habrá completado.
Instance setup finished. sql-server-prod is ready to use.
Presione Control+C para dejar de monitorear el puerto serie.
Haga clic en el nombre de la instancia
sql-server-prod
para abrir la página de detalles de la instancia de VM .En Acceso remoto , haga clic en Establecer contraseña de Windows y luego haga clic en Establecer para crear su cuenta en la máquina remota.
Este paso genera una contraseña para usted. Tome nota de la contraseña o cópiela en un archivo temporal seguro.
En la sección Compute Engine de la consola de Google Cloud, haga clic en el menú desplegable RDP y seleccione la opción Descargar el archivo RDP para descargar el archivo RDP para su instancia.
Utilice este archivo para conectarse a la instancia mediante un cliente RDP. Para obtener más información, consulte Clientes de escritorio remoto de Microsoft .
Cuando se le solicite, ingrese la contraseña que acaba de generar y luego haga clic en Aceptar .
Para aceptar el certificado del servidor e iniciar sesión en su instancia remota de Windows, haga clic en Continuar .
Cuando se le pregunte si desea que otras PC y dispositivos en la red puedan detectar su computadora, haga clic en No.
Configurar el disco adicional
El segundo disco adjunto a la instancia de producción es para almacenar su base de datos de producción. Este disco está en blanco, por lo que necesita particionarlo, formatearlo y montarlo.
- En una sesión RDP conectada a su instancia
sql-server-prod
, haga clic en el botón Inicio en la barra de tareas de Windows, escribadiskpart
y luego haga clic en diskpart para abrir DiskPart. - Cuando se le solicite permitir que la aplicación realice cambios, haga clic en Sí .
Muestre una lista de discos adjuntos a su instancia:
list disk
El resultado es el siguiente:
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 su disco de datos.
Seleccione el disco de datos:
select disk 1
Inicialice el disco:
clean
Cree una tabla de particiones GUID :
convert gpt
Cree la partición de datos utilizando todo el disco:
create partition primary
Enumere los volúmenes disponibles:
list volume
El resultado es el siguiente:
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 su disco de datos.
Seleccione el volumen:
select volume 2
Formatee la partición con el sistema de archivos NTFS y etiquétela
data
:format quick fs=ntfs label=data
Monte el disco como unidad D:
assign letter=d
Salir de DiskPart:
exit
Descargue la base de datos de muestra
Para configurar su entorno para este ejercicio de clonación, debe hacer lo siguiente:
- Cree una estructura de directorio en la unidad D (
data
) para almacenar su base de datos. - Descargue el archivo de respaldo completo de la base de datos de muestra de SQL Server de Wide World Importers . Esta base de datos simula la base de datos de producción que desea clonar.
Para crear el directorio y descargar el archivo de respaldo, siga estos pasos:
En su sesión RDP, haga clic en el botón Inicio en la barra de tareas de Windows, escriba
PowerShell
y luego seleccione la aplicación Windows PowerShell.En el indicador de PowerShell, cree una estructura de directorios para el almacenamiento de la base de datos:
mkdir D:\sql-server-data\wideworldimporters
Descargue el archivo de copia de seguridad en 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
Restaurar la base de datos de muestra
Debe restaurar la base de datos de ejemplo en la unidad D ( data
), ya sea de forma interactiva mediante los asistentes de Microsoft SQL Server Management Studio (SSMS) o directamente ejecutando un comando Transact-SQL.
Asistente SSMS
- En su sesión RDP, haga clic en el botón Inicio en la barra de tareas de Windows, escriba
ssms
y luego seleccione Microsoft SQL Server Management Studio (Ejecutar como administrador) . - Después de que se inicie la aplicación, haga clic en Conectar para conectarse al motor de base de datos
sql-server-prod
mediante la autenticación de Windows. - En el Explorador de objetos, haga clic con el botón derecho en Bases de datos y luego seleccione Restaurar base de datos .
- En Fuente , seleccione Dispositivo y luego haga clic en el botón [...] junto al nombre del dispositivo.
- En el cuadro de diálogo Seleccionar dispositivos de respaldo , asegúrese de que Archivo esté seleccionado para Tipo de medio de respaldo y luego haga clic en Agregar .
- En el selector de archivos, busque
D:\sql-server-data
, haga clic en el archivoWideWorldImporters-Full.bak
y luego haga clic en Aceptar . Haga clic en Aceptar para cerrar el cuadro de diálogo Seleccionar dispositivos de respaldo .
El cuadro de diálogo Restaurar base de datos ahora está lleno de datos sobre la copia de seguridad de la base de datos de Wide World Importers.
En Seleccionar una página , haga clic en Archivos .
Seleccione la casilla de verificación Reubicar todos los archivos en la carpeta .
En los campos Carpeta de archivos de datos y Carpeta de archivos de registro , ingrese
D:\sql-server-data\wideworldimporters
.Haga clic en Aceptar para iniciar la operación de restauración.
Después de un par de minutos, se le notificará que la base de datos se ha restaurado.
Transact-SQL
- En su sesión RDP, haga clic en el botón Inicio en la barra de tareas de Windows, escriba
ssms
y luego seleccione Microsoft SQL Server Management Studio (Ejecutar como administrador) . - Después de que se inicie la aplicación, haga clic en Conectar para conectarse al motor de base de datos
sql-server-prod
mediante la autenticación de Windows. - Seleccione Archivo > Nuevo > Consulta con conexión actual para abrir una nueva ventana de consulta.
Inicie una restauración desde el archivo de copia de seguridad que descargó:
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
Este comando restaura la base de datos y el archivo de registro en el directorio
D:\sql-server-data\wideworldimporters
.Haga clic derecho en el código de consulta y haga clic en Ejecutar .
Espere un par de minutos para que se complete la restauración de la base de datos. Puede hacer clic refresh Actualizar en el Explorador de objetos para ver si la base de datos aparece en el árbol de Bases de datos. Una vez finalizada la restauración de la base de datos, puede cerrar la ventana de consulta sin guardar.
Para verificar que la base de datos de muestra sea funcional, puede ejecutar una consulta.
En Microsoft SQL Server Management Studio, seleccione Archivo > Nuevo > Consulta con conexión actual para abrir una nueva ventana de consulta y luego copie 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;
Esta consulta recupera información resumida de las 100 facturas entregadas más recientemente.
Haga clic derecho en la ventana de consulta y haga clic en Ejecutar .
El panel Resultados muestra la información resumida.
Crear la instancia de VM de prueba
En esta sección, creará una instancia de SQL Server denominada sql-server-test
como destino para la base de datos clonada. La configuración de esta instancia es idéntica a la instancia de producción. Sin embargo, no crea un segundo disco de datos; en su lugar, adjuntará el disco de datos más adelante en este tutorial.
Consola
Vaya a la página de instancias de VM .
Haga clic en Crear .
En el campo Nombre , escriba
sql-server-test
.Para Región , seleccione us-east1 .
Para Zona , seleccione us-east1-b .
En Configuración de la máquina , cambie el Tipo de máquina a n1-estándar-2 ( 2 vCPU ).
Junto a la imagen del disco del libro , haz clic en Cambiar .
En el panel Disco de arranque , haga clic en la pestaña Imágenes públicas .
En la lista desplegable Sistema operativo , seleccione SQL Server en Windows Server .
En la lista desplegable Versión , seleccione SQL Server 2022 Standard en Windows Server 2022 Datacenter .
Asegúrese de que estén establecidos los siguientes valores:
- El tipo de disco de arranque está configurado en Disco persistente estándar .
- El tamaño (GB) está establecido en 50 .
Haga clic en Seleccionar .
En Identidad y acceso a API , establezca Ámbitos de acceso en Permitir acceso completo a todas las API de la nube .
Haga clic en Crear .
Concha de nube
Abra Cloud Shell.
Cree 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
Puede ignorar la advertencia de rendimiento del disco porque no necesita un alto rendimiento para este tutorial.
Conéctese a la instancia de VM
En la consola de Google Cloud, vaya a la página de instancias de VM .
Espere unos 5 minutos hasta que la instancia de VM esté lista.
Para monitorear el proceso de inicialización de la VM, vea la salida del puerto serie en Cloud Shell:
gcloud compute instances tail-serial-port-output sql-server-prod
Cuando vea el siguiente mensaje, la inicialización se habrá completado.
Instance setup finished. sql-server-test is ready to use.
Presione Control+C para dejar de monitorear el puerto serie.
Haga clic en el nombre de la instancia
sql-server-test
para mostrar la página de detalles de la instancia de VM .En Acceso remoto , haga clic en Establecer contraseña de Windows y luego haga clic en Establecer para crear su cuenta en la máquina remota.
Este paso genera una contraseña para usted. Tome nota de la contraseña o cópiela en un archivo temporal seguro.
En la sección Compute Engine de la consola de Google Cloud, haga clic en el menú desplegable RDP y seleccione la opción Descargar el archivo RDP para descargar el archivo RDP para su instancia.
Utilice este archivo para conectarse a la instancia mediante un cliente RDP. Para obtener más información, consulte Clientes de escritorio remoto de Microsoft .
Cuando se le solicite, ingrese la contraseña que acaba de generar y luego haga clic en Aceptar .
Para aceptar el certificado del servidor e iniciar sesión en su instancia remota de Windows, haga clic en Continuar .
Cuando se le pregunte si desea que su PC sea reconocible, haga clic en No.
Clonar la base de datos usando 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 persistentes para crear un clon de ese disco.
Las instantáneas de disco persistentes le permiten obtener una copia puntual de los datos en el disco. Programar instantáneas de disco es una forma de realizar una copia de seguridad automática de sus datos.
En esta sección del tutorial, haga lo siguiente:
- Tome una instantánea del disco de datos del servidor de producción.
- Cree un nuevo disco a partir de la instantánea.
- Monte el nuevo disco en el servidor de prueba.
- Adjunte la base de datos de este disco a SQL Server en la instancia de prueba.
El siguiente diagrama muestra cómo se clona una base de datos mediante instantáneas de disco.
Crear la instantánea del disco
Consola
En la consola de Google Cloud, vaya a la página de instancias de VM .
Haga clic en el nombre de la instancia de
sql-server-prod
.En la página de detalles de la instancia de VM , haga clic en el disco
sql-server-prod-data
.Haga clic en Crear instantánea .
Asigne a la instantánea el nombre
sql-server-prod-data-snapshot
.Para Ubicación , seleccione Regional .
Verifique que la región esté configurada en
us-east1
(la misma que sus instancias de VM).Seleccione la opción Habilitar VSS .
Esta opción utiliza el Servicio de instantáneas de volumen de Microsoft Windows para crear una instantánea coherente.
Haga clic en Crear .
Después de unos minutos, se crea su instantánea.
Concha de nube
Abra Cloud Shell.
Cree una instantánea de su disco de datos en la misma zona que la instancia de VM:
gcloud compute disks snapshot sql-server-prod-data \ --snapshot-names=sql-server-prod-data-snapshot \ --guest-flush \ --zone="${ZONE}"
La opción
--guest-flush
utiliza el Servicio de instantáneas de volumen en Microsoft Windows para crear una instantánea coherente. Después de unos minutos, se crea su instantánea.
Adjunte la instantánea del disco a la instancia de prueba
Debe crear un nuevo disco de datos a partir de la instantánea que creó y luego adjuntarlo a la instancia sql-server-test
.
Consola
En los siguientes pasos, creará un nuevo disco persistente, utilizará la instantánea del disco de producción para su contenido y luego adjuntará el disco a la instancia de prueba.
En la consola de Google Cloud, vaya a la página de instancias de VM .
Haga clic en el nombre de la instancia
sql-server-test
.En la página de detalles de la instancia de VM , haga clic en Editar .
Haga clic en add nuevo disco .
Asigne al nuevo disco el nombre
sql-server-test-data
.Para Tipo de fuente , seleccione Instantánea .
Para la instancia
sql-server-prod-data-snapshot
que creó, seleccione la instantánea de origen .Asegúrese de que Modo esté configurado en Lectura/Escritura .
Haga clic en Listo .
Concha de nube
Abra Cloud Shell.
Cree un nuevo disco persistente utilizando la instantánea del disco de producción para su contenido:
gcloud beta compute disks create sql-server-test-data \ --size=100GB \ --source-snapshot=sql-server-prod-data-snapshot \ --zone="${ZONE}"
Adjunte el nuevo disco a su 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
Monte el nuevo disco de datos en Windows
El disco que creó está conectado a la instancia de VM pero está fuera de línea y el volumen está configurado en solo lectura. Para configurar el volumen como lectura-escritura y montable, realice los siguientes pasos:
- En la ventana del cliente RDP que está conectada a su instancia
sql-server-test
, haga clic en el botón Inicio en la barra de tareas de Windows, escribadiskpart
y luego haga clic en diskpart para abrir DiskPart. - Cuando se le solicite permitir que la aplicación realice cambios, haga clic en Sí .
Muestre una lista de los discos conectados a su instancia:
list disk
El resultado es el siguiente:
Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 50 GB 0 B Disk 1 Offline 100 GB 0 B *
Su disco de datos (Disco 1, 100 GB) está fuera de línea.
Seleccione el disco de datos:
select disk 1
Ponga el disco en línea:
online disk
Enumere los volúmenes disponibles:
list volume
El resultado es el siguiente:
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 su volumen de datos. Aparece como Oculto sin letra de unidad asignada.
Seleccione el volumen:
select volume 2
Borre los atributos que se establecieron cuando creó el volumen a partir de la instantánea:
attr volume clear readonly hidden nodefaultdriveletter shadowcopy
Este comando hace que el volumen sea montable.
Monte el volumen como unidad D:
assign letter=d
Salir de DiskPart:
exit
Restablecer la propiedad y los permisos del archivo
Debido a que creó el disco de datos tomando una instantánea en la instancia sql-server-prod
, los ID de usuario para la propiedad y los permisos de los archivos son diferentes a los de la instancia de sql-server-test
. Debe cambiar la propiedad de los archivos a un usuario en la instancia sql-server-test
y actualizar los permisos para que los archivos sean legibles para su usuario local y el usuario MSSQLSERVER
.
- En la ventana del cliente RDP conectada a su instancia
sql-server-test
, haga clic en el botón Inicio en la barra de tareas de Windows y luego escribacmd
. - Abra la aplicación Símbolo del sistema como administrador.
Establezca el propietario de los archivos en la carpeta
sql-server-data
como usuario del servicioMSSQLSERVER
:icacls d:\sql-server-data /setowner "nt service\mssqlserver" /t
Restablezca todos los permisos en todos los archivos en la carpeta
sql-server-data
de nivel superior:icacls d:\sql-server-data /reset /t
Actualice las listas de control de acceso (ACL) 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
Deshabilite la herencia de la carpeta raíz de la unidad, para que solo se apliquen los permisos anteriores:
icacls d:\sql-server-data /inheritancelevel:r
Salga de la aplicación Símbolo del sistema:
exit
La instancia de SQL Server y el usuario local en la instancia sql-server-test
ahora pueden acceder a los archivos de la base de datos.
Adjunte la base de datos clonada
Ahora adjunte la base de datos clonada en la unidad D ( data
) a la instancia de prueba de SQL Server. Puede adjuntar la base de datos de forma interactiva mediante los asistentes de Microsoft SQL Server Management Studio o directamente ejecutando un comando Transact-SQL.
Asistente SSMS
- En la sesión RDP conectada a su instancia
sql-server-test
, haga clic en el botón Inicio en la barra de tareas de Windows, escribassms
y luego seleccione Microsoft SQL Server Management Studio (Ejecutar como administrador) . - Haga clic en Conectar para conectarse al motor de base de datos
sql-server-test
mediante la autenticación de Windows. - En el Explorador de objetos, haga clic con el botón derecho en Bases de datos y luego seleccione Adjuntar .
- En el asistente Adjuntar bases de datos , haga clic en Agregar .
- Vaya al directorio
D:\sql-server-data\wideworldimporters
, haga clic en el archivoWideWorldImporters.mdf
y luego haga clic en Aceptar . Haga clic en Aceptar para adjuntar la base de datos.
Después de unos momentos, se adjunta su base de datos clonada. Puede hacer clic refresh Actualizar en el Explorador de objetos para ver si la base de datos aparece en el árbol de Bases de datos.
Transact-SQL
- En una sesión RDP conectada a su instancia
sql-server-test
, haga clic en el botón Inicio en la barra de tareas de Windows, escribassms
y luego seleccione Microsoft SQL Server Management Studio (Ejecutar como administrador) . - Haga clic en Conectar para conectarse al motor de base de datos
sql-server-prod
mediante la autenticación de Windows. - Seleccione Archivo > Nuevo > Consulta con conexión actual para abrir una nueva ventana de consulta.
Adjunte los archivos de datos y 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
Haga clic derecho en el código de consulta y haga clic en Ejecutar .
Después de unos momentos, se adjunta su base de datos clonada. Puede hacer clic en Actualizar refresh en el Explorador de objetos para ver si su base de datos aparece en el árbol de Bases de datos. Una vez adjunta la base de datos, puede cerrar la ventana de consulta sin guardar.
Para verificar que la base de datos de muestra sea funcional, puede ejecutar una consulta.
En SQL Server Management Studio, seleccione Archivo > Nuevo > Consulta con conexión actual para abrir una nueva ventana de consulta y luego copie 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;
Esta consulta recupera información resumida de las 100 facturas entregadas más recientemente.
Para ejecutar la consulta, haga clic derecho en la ventana de consulta y luego seleccione Ejecutar .
El panel Resultados muestra la información resumida.
Ahora que ha visto cómo clonar una base de datos utilizando instantáneas de disco persistentes, es posible que desee intentar clonar una base de datos mediante copia de seguridad y restauración. Para completar el tutorial de este segundo enfoque, debe eliminar la base de datos que clonó de la instancia sql-server-test
.
Eliminar la base de datos clonada
Para eliminar la base de datos clonada que creó mediante instantáneas de disco, realice los siguientes pasos.
Asistente SSMS
- En la sesión RDP conectada a su instancia
sql-server-test
, abra Microsoft SQL Server Management Studio y luego conéctese al motor de base de datossql-server-test
. - En el Explorador de objetos, expanda Bases de datos , haga clic con el botón derecho en la base de datos
WorldWideImporters
y luego seleccione Eliminar . - En el asistente Eliminar objeto , asegúrese de que la casilla Cerrar conexiones existentes esté seleccionada.
- Haga clic en Aceptar .
Transact-SQL
- En la sesión RDP conectada a su instancia
sql-server-test
, abra Microsoft SQL Server Management Studio y luego conéctese al motor de base de datossql-server-test
. Para cerrar todas las conexiones a la base de datos
WideWorldImporters
y eliminarla, copie el siguiente script en una nueva ventana de consulta, haga clic derecho en el código y luego haga clic en Ejecutar :USE [master] GO ALTER DATABASE [WideWorldImporters] SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO DROP DATABASE [WideWorldImporters] GO
Una vez eliminada la base de datos, puede cerrar la ventana de consulta sin guardar. Puede hacer clic en Actualizar refresh en el Explorador de objetos para confirmar que se elimina la base de datos.
Clonación mediante copia de seguridad y restauración
Un segundo método para clonar una base de datos de SQL Server que se ejecuta en Compute Engine es utilizar una copia de seguridad y restauración nativa de SQL Server. Con este enfoque, transfieres la copia de seguridad mediante Cloud Storage.
Esta sección del tutorial utiliza recursos que creó en la sección Clonar la base de datos usando instantáneas de disco de Compute Engine de este tutorial. Si no completó esa sección, deberá hacerlo antes de continuar.
En esta sección del tutorial, haga lo siguiente:
- Cree un depósito de Cloud Storage.
- Haga una copia de seguridad de la base de datos en el servidor de producción.
- Copie el archivo de respaldo del servidor de producción a Cloud Storage.
- Copie el archivo de copia de seguridad de Cloud Storage al servidor de prueba.
- Restaure la copia de seguridad en la instancia de prueba.
El siguiente diagrama muestra cómo se clona una base de datos transfiriendo una copia de seguridad mediante Cloud Storage.
Porque los sistemas fuera de Google Cloud se le puede dar acceso a Cloud Storage, puede utilizar este enfoque para clonar bases de datos desde instancias externas de SQL Server.
Crear un depósito de Cloud Storage
Debe crear un depósito de Cloud Storage que almacene los archivos de respaldo mientras los transfiere desde la instancia sql-server-prod
a la instancia sql-server-test
.
Consola
En la consola de Google Cloud, vaya a la página del navegador de Cloud Storage.
Haga clic en Crear depósito .
Nombra el depósito
project-name
-bucket.Reemplace lo siguiente:
-
project-name
: El ID de su Google Cloudproyecto.
-
Expanda Elija una clase de almacenamiento predeterminada y luego seleccione Regional .
Para Ubicación , seleccione us-east1 .
Haga clic en Crear .
Concha de nube
Abra Cloud Shell.
Crea un depósito de Cloud Storage en la misma región que tus instancias de VM:
gcloud storage buckets create "gs://$(gcloud config get-value project)-bucket" --location="${REGION}"
Realice una copia de seguridad completa de un momento dado de la base de datos
En su entorno de producción, es posible que ya realice copias de seguridad. Puede utilizar estas copias de seguridad como base para clonar su base de datos. En este tutorial, realizará una copia de seguridad de solo copia para que no afecte ningún programa de copia de seguridad incremental o completo existente.
Asistente SSMS
- En la sesión RDP conectada a su instancia
sql-server-prod
, abra Microsoft SQL Server Management Studio y luego conéctese al motor de base de datossql-server-prod
. - En el Explorador de objetos, expanda Bases de datos , haga clic con el botón derecho en la base de datos
WorldWideImporters
y luego seleccione Tareas > Copia de seguridad . - En el asistente de copia de seguridad de la base de datos , asegúrese de que estén configurados los siguientes valores:
- El tipo de copia de seguridad está configurado en Completo .
- Se selecciona la copia de seguridad de solo copia .
- La copia de seguridad en está configurada en Disco .
- Para agregar un archivo de respaldo, haga clic en Agregar .
En el campo Destino , ingrese
D:\sql-server-data\WideWorldImporters-copy.bak
.Seleccione la página Opciones de medios y luego seleccione Sobrescribir todos los conjuntos de copias de seguridad existentes .
Seleccione la página Opciones de copia de seguridad y luego cambie Establecer compresión de copia de seguridad a Comprimir copia de seguridad .
Para crear la copia de seguridad, haga clic en Aceptar .
La copia de seguridad tarda unos minutos en crearse.
Transact-SQL
- En la sesión RDP conectada a su instancia
sql-server-prod
, abra Microsoft SQL Server Management Studio y luego conéctese al motor de base de datossql-server-prod
. Para realizar una copia de seguridad comprimida de solo copia de la base de datos
WideWorldImporters
al archivo
d:\sql-server-data\WideWorldImporters-copy.bak
, copie el siguiente script en una nueva ventana de consulta, haga clic derecho en el código y luego haga clic 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
Espere unos minutos para que el servidor cree la copia de seguridad. Una vez completada la copia de seguridad de la base de datos, puede cerrar la ventana de consulta sin guardar.
Copie el archivo de respaldo a Cloud Storage
- En la sesión RDP conectada a su instancia
sql-server-prod
, abra una ventana de Windows PowerShell. Copie el archivo de respaldo en el depósito de Cloud Storage que creó anteriormente:
gcloud storage cp d:\sql-server-data\WideWorldImporters-copy.bak "gs://$(gcloud config get-value project)-bucket/" --no-clobber
Salga de PowerShell.
exit
Copie el archivo de respaldo de Cloud Storage a sql-server-test
- En la sesión RDP conectada a su instancia
sql-server-test
, abra una ventana de Windows PowerShell. Copie el archivo de respaldo en el depósito de Cloud Storage que creó anteriormente:
gcloud storage cp "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" d:\sql-server-data\
Salga de PowerShell.
exit
Su instancia de prueba ahora tiene la copia de seguridad completa de su base de datos en su disco local.
Restaurar la copia de seguridad
Ahora puede restaurar la copia de seguridad completa en la unidad D ( data
) de la instancia sql-server-test
.
Asistente SSMS
- En la sesión RDP conectada a su instancia
sql-server-test
, abra Microsoft SQL Server Management Studio y luego conéctese al motor de base de datossql-server-test
. - En el Explorador de objetos, haga clic con el botón derecho en Bases de datos y luego seleccione Restaurar base de datos .
- Para Fuente , seleccione Dispositivo y luego haga clic en el botón [...] junto al nombre del dispositivo.
- En el cuadro de diálogo Seleccionar dispositivos de respaldo , seleccione Archivo en la lista Tipo de medio de respaldo y luego haga clic en Agregar .
- En el selector de archivos, busque
D:\sql-server-data
, haga clic en el archivoWideWorldImporters-copy.bak
y luego haga clic en Aceptar . Haga clic en Aceptar para cerrar el cuadro de diálogo Seleccionar dispositivos de respaldo .
El cuadro de diálogo Restaurar base de datos ahora está lleno de datos sobre la copia de seguridad de la base de datos
WideWorldImporters
.En Seleccionar una página , haga clic en Archivos .
Seleccione Reubicar todos los archivos en la carpeta .
En los campos Carpeta de archivos de datos y Carpeta de archivos de registro , ingrese
D:\sql-server-data\wideworldimporters
.Para iniciar la operación de restauración, haga clic en Aceptar .
Cuando se complete el proceso, verá el mensaje
Database 'WideWorldImporters' restored successfully
.
Transact-SQL
- En la sesión RDP conectada a su instancia
sql-server-test
, abra Microsoft SQL Server Management Studio y luego conéctese al motor de base de datossql-server-test
. - Seleccione Archivo > Nuevo > Consulta con conexión actual para abrir una nueva ventana de consulta.
Copie el siguiente comando T-SQL para iniciar una restauración desde el archivo de respaldo que copió desde Cloud Storage, restaurando 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
Haga clic derecho en el código y haga clic en Ejecutar .
Después de un par de minutos, se completa la restauración de la base de datos. Puede hacer clic refresh Actualizar en el Explorador de objetos para ver si la base de datos aparece en el árbol de Bases de datos. Una vez completada la restauración de la base de datos, puede cerrar la ventana de consulta sin guardar.
Para demostrar que la base de datos es funcional, puede ejecutar una consulta.
En Microsoft SQL Management Studio, seleccione Archivo > Nuevo > Consulta con conexión actual para abrir una nueva ventana de consulta y luego copie 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;
Esta consulta recupera información resumida de las 100 facturas entregadas más recientemente.
Haga clic derecho en la ventana de consulta y haga clic en Ejecutar .
El panel Resultados muestra la información resumida.
Usar Cloud SQL como destino de clonación
Si su base de datos de destino está alojada en Cloud SQL y la base de datos de origen está en Compute Engine, entonces el único mecanismo admitido para la clonación es realizar una copia de seguridad de la base de datos en Cloud Storage y luego restaurarla en Cloud SQL.
Para este tutorial, reutilizará la copia de seguridad que creó durante la sección anterior.
Crear 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 base de datos que tu instancia
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 root de
sqlserver
con una contraseña desqlserver12@
.
Actualizar permisos de objetos
Se deben configurar los permisos correctos tanto en el depósito de Cloud Storage como en el objeto de respaldo para que la cuenta del servicio Cloud SQL pueda leerlos. Estos permisos se configuran automáticamente cuando usas la consola de Google Cloud para importar el objeto, o puedes configurarlos usando los comandos gcloud
.
Abra Cloud Shell.
Establece una variable de entorno que contenga la dirección de la cuenta de servicio de tu instancia de Cloud SQL:
CLOUDSQL_SA="$(gcloud sql instances describe sqlserver-cloudsql --format='get(serviceAccountEmailAddress)')"
Agregue la cuenta de servicio a la política de IAM del depósito 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
Importar la base de datos exportada
Abra Cloud Shell.
Importar el archivo exportado en su instancia de SQL en la nube:
gcloud sql import bak sqlserver-cloudsql \ "gs://$(gcloud config get-value project)-bucket/WideWorldImporters-copy.bak" \ --database WideWorldImporters
Cuando se le solicite, ingrese
y
.Instale el paquete de herramientas de SQL Server:
sudo apt install -y mssql-tools
Si acepta los términos de la licencia, ingrese
yes
cuando se le solicite.Utiliza estas herramientas para conectarse a Cloud SQL desde Cloud Shell para que pueda ejecutar consultas en la instancia de Cloud SQL.
Conecte el proxy de Cloud SQL a su 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 sea funcional, ejecute 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 le solicite, ingrese la contraseña del usuario de
sqlserver
del servidor de base de datossqlserver-cloudsql
(sqlserver12@
).Esta consulta recupera información resumida de las 100 facturas entregadas más recientemente.
La salida es la siguiente:
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 ...
Limpiar
Para evitar incurrir en cargos a su Google Cloud Cuenta de los recursos utilizados en este tutorial, puede eliminar el Google Cloud Proyecto que creó para este tutorial.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
¿Qué sigue?
- Conozca las mejores prácticas para ejecutar instancias de SQL Server en Compute Engine .
- Explore arquitecturas de referencia, diagramas y mejores prácticas sobre Google Cloud. Eche un vistazo a nuestro centro de arquitectura en la nube .