Si quieres migrar datos de SQL Server 2017, consulta el artículo Migrar datos entre SQL Server 2017 y Cloud SQL para SQL Server usando archivos de copia de seguridad.
Este tutorial es útil si eres administrador de sistemas, desarrollador, ingeniero, administrador de bases de datos o ingeniero de DevOps y quieres migrar datos de SQL Server 2008 a Cloud SQL para SQL Server 2017 o actualizar de SQL Server 2008 a SQL Server 2017.
En este tutorial se da por hecho que tienes una licencia de SQL Server 2008 y que conoces los siguientes conceptos:
- Microsoft SQL Server 2008
- Microsoft SQL Server 2017
- Microsoft PowerShell
- Cloud Storage
- Cloud SQL
Objetivos
- Crea una instancia de Cloud SQL para SQL Server.
- Crea un segmento de Cloud Storage.
- Crea una copia de seguridad de tu base de datos.
- Importa la base de datos en Cloud SQL para SQL Server.
- Valida los datos importados.
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Cuando termines las tareas que se describen en este documento, puedes evitar que se te siga facturando eliminando los recursos que has creado. Para obtener más información, consulta la sección Limpiar.
Antes de empezar
En la Google Cloud consola, en la página del selector de proyectos, selecciona o crea un Google Cloud proyecto.
Comprueba que la facturación esté habilitada en tu Google Cloud proyecto. Consulta cómo confirmar que la facturación está habilitada en tu proyecto.
Habilita las APIs Cloud Storage y Cloud SQL.
Instala e inicializa la CLI de Google Cloud en el servidor que ejecuta SQL Server 2008.
En la Google Cloud consola, ve a Cloud Shell.
En la parte inferior de la consola Google Cloud , se abre una sesión de Cloud Shell y se muestra un mensaje de la línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalado y con valores ya definidos para tu proyecto actual. La sesión puede tardar unos segundos en inicializarse.
Crear la instancia de Cloud SQL y el segmento de Cloud Storage
En Cloud Shell, crea la instancia de Cloud SQL para SQL Server 2017 Enterprise a la que migrarás la base de datos más adelante:
gcloud beta sql instances create target \ --database-version=SQLSERVER_2017_ENTERPRISE \ --cpu=2 \ --memory=5GB \ --root-password=sqlserver12@ \ --zone=us-central1-f
La creación de la instancia puede tardar unos minutos. El nombre de usuario raíz predeterminado es
sqlserver
y la contraseña predeterminada essqlserver12@
. En este tutorial, crearás la instancia en la zonaus-central1-f
. Para obtener más información sobre las zonas, consulta Ubicaciones de Cloud.Crea un segmento de Cloud Storage para almacenar el archivo de copia de seguridad antes de importar los datos en Cloud SQL:
gcloud storage buckets create "gs://bucket-name" --location=US
Sustituye
bucket-name
por un nombre único para el segmento de Cloud Storage.
Crear una copia de seguridad de tu base de datos
En esta sección, te conectarás a tu servidor Windows con SQL Server 2008, crearás una copia de seguridad de tu base de datos y la subirás a Cloud Storage.
Conéctate a tu servidor Windows con SQL Server 2008 mediante RDP. Puede ser el servidor principal o un servidor de réplica.
Inicia la herramienta de línea de comandos de PowerShell.
En el terminal en el que instalaste gcloud CLI, crea una carpeta de copia de seguridad:
mkdir c:\backup
Crea una copia de seguridad de la base de datos en la carpeta de copias de seguridad:
osql -E -Q "BACKUP DATABASE db-name TO DISK='c:\backup\db-name.bak'"
Sustituye
db-name
por el nombre de la base de datos que quieras migrar a Cloud SQL.Copia el archivo de copia de seguridad en el segmento de Cloud Storage:
$PROJECT_ID = (gcloud sql instances describe target --format='value(project)' ) gcloud storage cp c:\backup\db-name.bak gs://bucket-name --no-clobber
Importar el archivo de copia de seguridad en Cloud SQL
En Cloud Shell, recupera la cuenta de servicio asociada a la instancia de Cloud SQL y guárdala en una variable:
SVC_EMAIL_ADDRESS=$(gcloud sql instances describe target \ --format='value(serviceAccountEmailAddress)') echo $SVC_EMAIL_ADDRESS
Google Cloud crea una cuenta de servicio cuando creaste la instancia de Cloud SQL. La cuenta de servicio se usa para dar permiso a la instancia de Cloud SQL para acceder a los recursos que necesita.
Concede a la cuenta de servicio permiso para escribir en el segmento de Cloud Storage:
gcloud storage buckets add-iam-policy-binding gs://bucket-name \ --member=serviceAccount:${SVC_EMAIL_ADDRESS} \ --role=roles/storage.legacyBucketWriter
Concede a la cuenta de servicio permiso para leer archivos del segmento de Cloud Storage:
gcloud storage buckets add-iam-policy-binding gs://bucket-name \ --member=serviceAccount:${SVC_EMAIL_ADDRESS} \ --role=roles/storage.legacyObjectReader
Importa el archivo de copia de seguridad en la base de datos de Cloud SQL:
gcloud beta sql import bak target \ gs://bucket-namedb-name.bak \ --database db-name
Validar la importación de datos
En esta sección, comprobarás que los datos se han importado correctamente.
En Cloud Shell, instala el kit de herramientas de SQL Server:
sudo apt-get install -y mssql-tools
Si aceptas los términos de la licencia, introduce
yes
cuando se te pida.Para acceder de forma segura a tu instancia de Cloud SQL, descarga el proxy de Cloud SQL:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
Inicia el proxy de Cloud SQL:
CONNECTION_NAME=$(gcloud sql instances describe target --format='value(connectionName)') ./cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
Ejecuta una consulta para validar los datos de una o varias de las tablas:
/opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q "query-string"
Sustituye
query-string
por la consulta SQL que quieras ejecutar.Cuando se te pida, introduce la contraseña de
sqlserver12@
.
Limpieza
La forma más fácil de evitar que te cobren es eliminar el Google Cloud proyecto que has creado para el tutorial.Eliminar el proyecto
- 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.
Siguientes pasos
- Consulta información sobre las claves de cifrado gestionadas por el cliente (CMEK) de Cloud SQL para SQL Server.
- Consulta información sobre cómo configurar la conectividad de IP privada en Cloud SQL para SQL Server.
- Consulta arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Centro de arquitectura de Cloud.