Carregar dados do Microsoft SQL Server no BigQuery
É possível carregar dados do Microsoft SQL Server para o BigQuery usando o conector do serviço de transferência de dados do BigQuery para Microsoft SQL Server. O conector do Microsoft SQL Server oferece suporte a cargas de dados de instâncias do Microsoft SQL Server hospedadas em ambientes locais e outros provedores de nuvem, como Cloud SQL, Amazon Web Services (AWS) ou Microsoft Azure. Com o serviço de transferência de dados do BigQuery, é possível criar jobs de transferência de dados sob demanda e recorrentes para transferir dados da sua instância do Microsoft SQL Server para o BigQuery.
Limitações
Os jobs de transferência de dados do Microsoft SQL Server estão sujeitos às seguintes limitações:
- Há um número limitado de conexões simultâneas com um banco de dados do Microsoft SQL Server. Portanto, o número de execuções de transferência simultâneas para um único banco de dados do Microsoft SQL Server também é limitado. Verifique se o número de jobs de transferência simultâneos é menor que o número máximo de conexões simultâneas aceitas pelo banco de dados do Microsoft SQL Server.
- Alguns tipos de dados do Microsoft SQL Server podem ser mapeados para o tipo
STRINGno BigQuery para evitar perda de dados. Por exemplo, alguns tipos numéricos no Microsoft SQL Server que não têm precisão e escala definidas podem ser mapeados paraSTRINGno BigQuery. Para mais informações, consulte Mapeamento de tipo de dados.
Opções de ingestão de dados
A seção a seguir fornece informações sobre as opções de ingestão de dados ao configurar uma transferência de dados do Microsoft SQL Server.
Configuração de TLS
O conector do Microsoft SQL Server é compatível com a configuração de segurança no nível de transporte (TLS) para criptografar suas transferências de dados para o BigQuery. O conector do Microsoft SQL Server é compatível com as seguintes configurações de TLS:
- Criptografar dados e verificar CA e nome do host: esse modo realiza uma validação completa do servidor usando TLS sobre o protocolo TCPS. Ele criptografa todos os
dados em trânsito e verifica se o certificado do servidor de banco de dados foi assinado
por uma autoridade certificadora (CA) confiável. Esse modo também verifica se o
nome do host ao qual você está se conectando corresponde exatamente ao nome comum (CN) ou a um
nome alternativo do titular (SAN) no certificado do servidor. Esse modo impede que
invasores usem um certificado válido para um domínio diferente e se passem pelo
servidor de banco de dados.
- Se o nome do host não corresponder ao CN ou SAN do certificado, a conexão vai falhar. Configure uma resolução de DNS para corresponder ao certificado ou use um modo de segurança diferente.
- Use esse modo para ter a opção mais segura e evitar ataques de pessoa no meio (PITM, na sigla em inglês).
- Criptografar dados e verificar somente a CA: esse modo criptografa todos os dados usando TLS
pelo protocolo TCPS e verifica se o certificado do servidor é assinado por
uma CA em que o cliente confia. No entanto, esse modo não verifica o nome do host do servidor. Esse modo se conecta com sucesso desde que o certificado seja válido
e emitido por uma VA confiável, independente de o nome do host no
certificado corresponder ao nome do host a que você está se conectando.
- Use esse modo se quiser garantir que você está se conectando a um servidor cujo certificado é assinado por uma CA confiável, mas o nome do host não é verificável ou você não tem controle sobre a configuração do nome do host.
- Somente criptografia: esse modo criptografa
todos os dados transferidos entre o cliente e o servidor. Ele não realiza nenhuma validação de certificado ou nome do host.
- Esse modo oferece algum nível de segurança ao proteger os dados em trânsito, mas pode ficar vulnerável a ataques PITM.
- Use esse modo se precisar garantir que todos os dados estejam criptografados, mas não puder ou não quiser verificar a identidade do servidor. Recomendamos usar esse modo ao trabalhar com VPCs particulares.
- Sem criptografia ou verificação: esse modo não criptografa nenhum dado e não realiza nenhuma verificação de certificado ou nome de host. Todos os dados são enviados como texto simples.
- Não recomendamos o uso desse modo em um ambiente em que dados sensíveis são tratados.
- Recomendamos usar esse modo apenas para testes em uma rede isolada em que a segurança não é uma preocupação.
Certificado de servidor confiável (PEM)
Se você estiver usando o modo Criptografar dados e verificar CA e nome do host ou o modo Criptografar dados e verificar CA, também será possível fornecer um ou mais certificados codificados em PEM. Esses certificados são necessários em alguns cenários em que o serviço de transferência de dados do BigQuery precisa verificar a identidade do servidor de banco de dados durante a conexão TLS:
- Se você estiver usando um certificado assinado por uma CA particular na sua organização ou um certificado autoassinado, forneça a cadeia de certificados completa ou o único certificado autoassinado. Isso é necessário para certificados emitidos por CAs internas de serviços gerenciados de provedores de nuvem, como o Amazon Relational Database Service (RDS).
- Se o certificado do servidor de banco de dados for assinado por uma CA pública (por exemplo, Let's Encrypt, DigiCert ou GlobalSign), não será necessário fornecer um certificado. Os certificados raiz dessas CAs públicas são pré-instalados e confiáveis para o serviço de transferência de dados do BigQuery.
Você pode fornecer certificados codificados em PEM no campo Certificado PEM confiável ao criar uma configuração de transferência do Microsoft SQL Server, com os seguintes requisitos:
- O certificado precisa ser uma cadeia de certificados válida codificada em PEM.
- O certificado precisa estar totalmente correto. Qualquer certificado ausente na cadeia ou conteúdo incorreto causa falha na conexão TLS.
- Para um único certificado, é possível fornecer um certificado único e autoassinado do servidor de banco de dados.
- Para uma cadeia de certificados completa emitida por uma CA particular, forneça a cadeia de confiança completa. Isso inclui o certificado do servidor de banco de dados e todos os certificados de CA intermediários e raiz.
Antes de começar
Antes de programar uma transferência de dados do Microsoft SQL Server, você precisa atender aos seguintes pré-requisitos.
Pré-requisitos do Microsoft SQL Server
Você precisa ter criado uma conta de usuário no banco de dados do Microsoft SQL Server. Para mais informações, consulte Criar um usuário com um login.
Pré-requisitos do BigQuery
- Verifique se você concluiu todas as ações necessárias para ativar o serviço de transferência de dados do BigQuery.
- Crie um conjunto de dados do BigQuery para armazenar os dados.
Funções exigidas
Para receber as permissões necessárias para criar uma transferência de dados do Microsoft SQL Server,
peça ao administrador para conceder a você o
papel do IAM de Administrador do BigQuery (roles/bigquery.admin)
no seu projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para criar uma transferência de dados do Microsoft SQL Server. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para criar uma transferência de dados do Microsoft SQL Server:
-
bigquery.transfers.update -
bigquery.datasets.get
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Configuração de rede
É necessário configurar configurações de rede específicas quando um endereço IP público não está disponível para a conexão do banco de dados do Microsoft SQL Server. Para mais informações, consulte as seguintes seções:
- Configurar uma conexão com a instância Google Cloud
- Configurar uma conexão com a AWS
- Configurar uma conexão com o Azure
Configurar uma transferência de dados do Microsoft SQL Server
Selecione uma das seguintes opções:
Console
Acesse a página Transferências de dados.
Clique em Criar transferência.
Na seção Tipo de fonte, em Fonte, selecione Microsoft SQL Server.
Na seção Detalhes da fonte de dados, faça o seguinte:
- Em Anexo de rede, selecione um anexo de rede ou clique em Criar anexo de rede.
- Em Host, insira o nome do host ou o endereço IP do banco de dados do Microsoft SQL Server.
- Em Número da porta, insira o número da porta do banco de dados do Microsoft SQL Server.
- Em Nome do banco de dados, insira o nome do banco de dados do Microsoft SQL Server.
- Em Nome de usuário, insira o nome de usuário do usuário do Microsoft SQL Server que está iniciando a conexão com o banco de dados do Microsoft SQL Server.
- Em Senha, insira a senha do usuário do Microsoft SQL Server que está iniciando a conexão com o banco de dados do Microsoft SQL Server.
- Em Modo TLS, selecione uma opção no menu. Para mais informações sobre os modos TLS, consulte Configuração do TLS.
- Em Certificado PEM confiável, insira o certificado público da autoridade de certificação (CA) que emitiu o certificado TLS do servidor de banco de dados. Para mais informações, consulte Certificado de servidor confiável (PEM).
- Em Objetos do Microsoft SQL Server a serem transferidos, navegue pela tabela do Microsoft SQL Server ou insira manualmente os nomes das tabelas necessárias para a transferência.
Na seção Configurações de destino, em Conjunto de dados, selecione o conjunto que você criou para armazenar seus dados ou clique em Criar novo conjunto de dados e crie um para usar como conjunto de dados de destino.
No campo Nome de exibição, na seção Nome de configuração da transferência, insira um nome para a transferência. O nome da transferência pode ser qualquer valor que permita a identificação dela, caso você precise modificá-la mais tarde.
Na seção Opções de programação, realize estas ações:
- Selecione uma frequência de repetição. Se você selecionar a opção Horas, Dias (padrão), Semanas ou Meses, também precisará especificar uma frequência. Também é possível selecionar a opção Personalizada para criar uma frequência de repetição mais específica. Se você selecionar a opção Sob demanda, essa transferência de dados só vai ser executada quando você acioná-la manualmente.
- Se aplicável, selecione a opção Começar agora ou Começar em um horário definido e forneça uma data de início e um horário de execução.
Opcional: na seção Opções de notificação, faça o seguinte:
- Para ativar as notificações por e-mail, clique no botão Notificações por e-mail e coloque na posição ativada. Quando você ativa essa opção, o administrador de transferências recebe uma notificação por e-mail quando uma execução de transferência falha.
- Para configurar as notificações de execução do Pub/Sub para sua transferência, clique no botão Notificações do Pub/Sub para ativar. Selecione o nome do tópico ou clique em Criar um tópico.
Opcional: na seção Opções avançadas, selecione um tipo de criptografia para essa transferência. É possível selecionar um Google-owned and Google-managed encryption key ou uma chave do Cloud Key Management Service de propriedade do cliente. Para mais informações sobre chaves de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).
Clique em Salvar.
bq
Insira o comando bq mk e forneça a sinalização de execução da transferência --transfer_config:
bq mk \ --transfer_config \ --project_id=PROJECT_ID \ --data_source=DATA_SOURCE \ --display_name=DISPLAY_NAME \ --target_dataset=DATASET \ --params='PARAMETERS'
Substitua:
PROJECT_ID(opcional): o ID do projeto do Google Cloud . Se a flag--project_idnão for fornecida para especificar um projeto específico, o projeto padrão será usado.DATA_SOURCE: a fonte de dados, que ésqlserver.DISPLAY_NAME: o nome de exibição da configuração da transferência de dados. O nome da transferência pode ser qualquer valor que permita identificá-la, caso você precise modificá-la mais tarde.DATASET: o conjunto de dados de destino na configuração da transferência de dados.PARAMETERSé o parâmetro da configuração de transferência criada no formato JSON. Por exemplo,--params='{"param":"param_value"}'. Confira a seguir os parâmetros de uma transferência do Microsoft SQL Server:connector.networkAttachment(opcional): o nome do anexo de rede para se conectar ao banco de dados do Microsoft SQL Server.connector.database: o nome do banco de dados do Microsoft SQL Server.connector.endpoint.host: o nome do host ou o endereço IP do banco de dados.connector.endpoint.port: o número da porta do banco de dados.connector.authentication.username: o nome de usuário do usuário do banco de dados.connector.authentication.password: a senha do usuário do banco de dados.connector.tls.mode: especifique uma configuração de TLS para usar com esta transferência:ENCRYPT_VERIFY_CA_AND_HOSTpara criptografar dados e verificar a CA e o nome do hostENCRYPT_VERIFY_CApara criptografar dados e verificar apenas a ACENCRYPT_VERIFY_NONEsomente para criptografia de dadosDISABLEpara nenhuma criptografia ou verificação
connector.tls.trustedServerCertificate: (opcional) forneça um ou mais certificados codificados em PEM. Obrigatório apenas se o valor deconnector.tls.modeforENCRYPT_VERIFY_CA_AND_HOSTouENCRYPT_VERIFY_CA.assets: uma lista dos nomes das tabelas do Microsoft SQL Server a serem transferidas do banco de dados do Microsoft SQL Server como parte da transferência.
Por exemplo, o comando a seguir cria uma transferência do Microsoft SQL Server
chamada My Transfer:
bq mk \ --transfer_config --target_dataset=mydataset --data_source=sqlserver --display_name='My Transfer' --params='{"assets":["db1/dbo/Department","db1/dbo/Employees"], "connector.authentication.username": "User1", "connector.authentication.password":"ABC12345", "connector.database":"DB1", "connector.endpoint.host":"192.168.0.1", "connector.endpoint.port":"1520", "connector.networkAttachment":"projects/dev-project1/regions/us-central1/networkattachments/na1", "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST", "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'
Para executar manualmente uma transferência de dados fora da sua programação regular, inicie uma execução de preenchimento.
Mapeamento de tipo de dados
A tabela a seguir mapeia os tipos de dados do Microsoft SQL Server para os tipos de dados correspondentes do BigQuery:
| Tipo de dados do Microsoft SQL Server | Tipo de dados do BigQuery |
|---|---|
tinyint |
INTEGER |
smallint |
INTEGER |
int |
INTEGER |
bigint |
BIGNUMERIC |
bit |
BOOLEAN |
decimal |
BIGNUMERIC |
numeric |
NUMERIC |
money |
BIGNUMERIC |
smallmoney |
BIGNUMERIC |
float |
FLOAT |
real |
FLOAT |
date |
DATE |
time |
TIME |
datetime2 |
TIMESTAMP |
datetimeoffset |
TIMESTAMP |
datetime |
TIMESTAMP |
smalldatetime |
TIMESTAMP |
char |
STRING |
varchar |
STRING |
text |
STRING |
nchar |
STRING |
nvarchar |
STRING |
ntext |
STRING |
binary |
BYTES |
varbinary |
BYTES |
image |
BYTES |
geography |
STRING |
geometry |
STRING |
hierarchyid |
BYTES |
rowversion |
BYTES |
sql_variant |
BYTES |
uniqueidentifier |
STRING |
xml |
STRING |
json |
STRING |
vector |
STRING |
Os tipos de dados json e vector são compatíveis apenas no Azure.
O tipo de dados JSON é compatível com bancos de dados SQL do Azure e instâncias gerenciadas do SQL do Azure configuradas com a política de atualização sempre atualizada. O tipo de dados JSON não é compatível com instâncias gerenciadas do Azure SQL configuradas com a política de atualização do Microsoft SQL Server 2022.
O Microsoft SQL Server armazena JSON como NVARCHAR(MAX), e não como um tipo
JSON. Recomendamos usar CHECK (ISJSON(json_col) = 1) para validação e JSON_VALUE() para consultas.
O Microsoft SQL Server não tem suporte a vetores para o tipo de dados vector. Recomendamos armazenar vetores como matrizes JSON em NVARCHAR(MAX) e usar JSON_VALUE() para extração, com cálculos manuais de FLOAT para similaridade.
Resolver problemas
Para resolver problemas com a transferência de dados, consulte Problemas de transferência do Microsoft SQL Server.
Preços
Não há custo para transferir dados do Microsoft SQL Server para o BigQuery enquanto esse recurso está em Pré-lançamento.
A seguir
- Para uma visão geral do serviço de transferência de dados do BigQuery, consulte O que é o serviço de transferência de dados do BigQuery?.
- Para mais informações sobre o uso de transferências, incluindo detalhes sobre a configuração de transferência, como listar configurações e como visualizar o histórico de execução de uma transferência, consulte Como trabalhar com transferências.