Como migrar dados entre o SQL Server 2008 e o Cloud SQL para SQL Server usando arquivos de backup

Neste tutorial, você migra dados do SQL Server 2008 para o Cloud SQL para SQL Server 2017 Enterprise. No tutorial, mostramos como exportar os dados do SQL Server 2008, importá-los para o Cloud SQL para SQL Server 2017 e validar se eles foram importados com êxito.

Se você quer migrar dados do SQL Server 2017, consulte Como migrar dados entre o SQL Server 2017 e o Cloud SQL para SQL Server usando arquivos de backup.

Este tutorial é útil se você é um administrador de sistemas, desenvolvedor, engenheiro, administrador de banco de dados ou engenheiro de DevOps que quer migrar dados do SQL Server 2008 para o Cloud SQL para SQL Server 2017 ou quer fazer upgrade do SQL Server 2008 para o SQL Server 2017.

No tutorial, pressupomos que você tenha uma licença para o SQL Server 2008 e que tenha familiaridade com estes produtos:

Objetivos

  • Criar uma instância do Cloud SQL for SQL Server.
  • Criar um bucket do Cloud Storage.
  • Fazer backup do seu banco de dados.
  • Importar o banco de dados para o Cloud SQL for SQL Server.
  • Validar os dados importados.

Custos

Neste tutorial, usamos os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem ser qualificados para uma avaliação gratuita.

Ao concluir este tutorial, exclua os recursos criados para evitar o faturamento contínuo. Para mais informações, consulte Como fazer a limpeza.

Antes de começar

  1. No Console do Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    ACESSAR A PÁGINA DO SELETOR DE PROJETOS

  2. Verifique se o faturamento está ativado para seu projeto em nuvem. Saiba como confirmar que o faturamento está ativado para seu projeto.

  3. Ative as APIs Cloud Storage e Cloud SQL.

    ATIVAR AS APIS

  4. Instale e inicialize o SDK do Cloud no servidor que está executando o SQL Server 2008.

  5. No Console do Cloud, acesse o Cloud Shell.

    ACESSAR o Cloud Shell

    Na parte inferior do Console do Cloud, uma sessão do Cloud Shell é aberta e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com o SDK do Cloud pré-instalado, que inclui a ferramenta de linha de comando gcloud e os valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

Como criar a instância do Cloud SQL e o bucket do Cloud Storage

  1. No Cloud Shell, crie a instância do Cloud SQL para SQL Server 2017 Enterprise para a qual o banco de dados será migrado posteriormente:

    gcloud beta sql instances create target  \
        --database-version=SQLSERVER_2017_ENTERPRISE \
        --cpu=2 \
        --memory=5GB \
        --root-password=sqlserver12@ \
        --zone=us-central1-f
    

    Pode levar alguns minutos para criar a instância. O nome de usuário raiz padrão é sqlserver com uma senha padrão de sqlserver12@. Para este tutorial, você cria a instância na zona us-central1-f. Para mais informações sobre zonas, consulte Locais na nuvem.

  2. Crie um bucket do Cloud Storage para armazenar o arquivo de backup antes que os dados sejam importados para o Cloud SQL:

    gsutil mb -b off -l US "gs://bucket-name"
    

    Substitua bucket-name por um nome exclusivo para o bucket do Cloud Storage.

Como fazer backup do banco de dados

Nesta seção, você se conecta ao servidor do Windows executando o SQL Server 2008, cria um backup do banco de dados e faz upload dele para o Cloud Storage.

  1. Conecte-se ao servidor do Windows executando o SQL Server 2008 usando o RDP. Pode ser o servidor principal ou de réplica.

  2. Inicie a ferramenta de linha de comando do PowerShell.

  3. No terminal em que você instalou o SDK do Cloud, crie uma pasta de backup:

    mkdir c:\backup
    
  4. Crie um backup do banco de dados na pasta de backup:

    osql -E -Q "BACKUP DATABASE db-name TO DISK='c:\backup\db-name.bak'"
    

    Substitua db-name pelo nome do banco de dados que você quer migrar para o Cloud SQL.

  5. Copie o arquivo de backup para o bucket do Cloud Storage:

    $PROJECT_ID = (gcloud sql instances describe target --format='value(project)' )
    gsutil cp -n c:\backup\db-name.bak gs://bucket-name
    

Como importar o arquivo de backup para o Cloud SQL

  1. No Cloud Shell, recupere a conta de serviço associada à instância do Cloud SQL e salve-a em uma variável:

    SVC_EMAIL_ADDRESS=$(gcloud sql instances describe target \
        --format='value(serviceAccountEmailAddress)')
    echo $SVC_EMAIL_ADDRESS
    

    O Google Cloud cria uma conta de serviço quando você cria a instância do Cloud SQL. Use a conta de serviço para conceder à instância do Cloud SQL permissão para acessar os recursos necessários.

  2. Adicione a conta de serviço à lista de controle de acesso (ACL) do bucket do Cloud Storage com permissões de gravador:

    gsutil acl ch -u ${SVC_EMAIL_ADDRESS}:W gs://bucket-name
    
  3. Adicione a conta de serviço ao arquivo de importação com permissões de leitor:

    gsutil acl ch -u $SVC_EMAIL_ADDRESS:R gs://bucket-name/db-name.bak
    
  4. Importe o arquivo de backup para o banco de dados do Cloud SQL:

    gcloud beta sql import bak target \
        gs://bucket-namedb-name.bak \
        --database db-name
    

Como validar a importação de dados

Nesta seção, você verifica se os dados foram importados com êxito.

  1. No Cloud Shell, instale o kit de ferramentas do SQL Server:

    sudo apt-get install -y mssql-tools
    

    Se você aceitar os termos da licença, insira yes quando for solicitado.

  2. Para acessar a instância do Cloud SQL com segurança, faça o download do proxy do Cloud SQL:

    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  3. Inicie o proxy do Cloud SQL:

    CONNECTION_NAME=$(gcloud sql instances describe target --format='value(connectionName)')
    ./cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
    
  4. Execute uma consulta para validar os dados em uma ou mais tabelas:

    /opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q "query-string"
    

    Substitua query-string pela consulta SQL que você quer executar.

    Quando for necessário, digite a senha sqlserver12@.

Limpeza

A maneira mais fácil de eliminar o faturamento é excluir o projeto do Cloud que você criou para o tutorial.

Excluir o projeto

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar a página "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

A seguir