Migrar datos entre SQL Server 2008 y Cloud SQL para SQL Server mediante archivos de copia de seguridad


En este tutorial, migrarás datos de SQL Server 2008 a Cloud SQL para SQL Server 2017 Enterprise. En este tutorial se explica cómo exportar los datos de SQL Server 2008, importarlos a Cloud SQL para SQL Server 2017 y comprobar que se han importado correctamente.

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:

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.

Los usuarios nuevos Google Cloud pueden disfrutar de una prueba gratuita.

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

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

    IR A LA PÁGINA DE SELECCIÓN DE PROYECTOS

  2. 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.

  3. Habilita las APIs Cloud Storage y Cloud SQL.

    HABILITAR LAS APIS

  4. Instala e inicializa la CLI de Google Cloud en el servidor que ejecuta SQL Server 2008.

  5. En la Google Cloud consola, ve a Cloud Shell.

    IR 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

  1. 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 es sqlserver12@. En este tutorial, crearás la instancia en la zona us-central1-f. Para obtener más información sobre las zonas, consulta Ubicaciones de Cloud.

  2. 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.

  1. Conéctate a tu servidor Windows con SQL Server 2008 mediante RDP. Puede ser el servidor principal o un servidor de réplica.

  2. Inicia la herramienta de línea de comandos de PowerShell.

  3. En el terminal en el que instalaste gcloud CLI, crea una carpeta de copia de seguridad:

    mkdir c:\backup
    
  4. 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.

  5. 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

  1. 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.

  2. 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
    
  3. 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
    
  4. 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.

  1. 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.

  2. 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
    
  3. Inicia el proxy de Cloud SQL:

    CONNECTION_NAME=$(gcloud sql instances describe target --format='value(connectionName)')
    ./cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
    
  4. 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

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Siguientes pasos