Caricare i dati di Microsoft SQL Server in BigQuery
Puoi caricare i dati da Microsoft SQL Server a BigQuery utilizzando il connettore BigQuery Data Transfer Service per Microsoft SQL Server. Il connettore Microsoft SQL Server supporta i caricamenti di dati da istanze Microsoft SQL Server ospitate in ambienti on-premise e altri provider cloud, come Cloud SQL, Amazon Web Services (AWS) o Microsoft Azure. Con BigQuery Data Transfer Service, puoi creare job di trasferimento dei dati on demand e ricorrenti per trasferire i dati dalla tua istanza di Microsoft SQL Server a BigQuery.
Limitazioni
I job di trasferimento dei dati di Microsoft SQL Server sono soggetti alle seguenti limitazioni:
- Esiste un numero limitato di connessioni simultanee a un database Microsoft SQL Server. Pertanto, anche il numero di esecuzioni di trasferimento simultanee a un singolo database Microsoft SQL Server è limitato. Assicurati che il numero di job di trasferimento simultanei sia inferiore al numero massimo di connessioni simultanee supportate dal database Microsoft SQL Server.
- Alcuni tipi di dati di Microsoft SQL Server potrebbero essere mappati al tipo
STRINGin BigQuery per evitare la perdita di dati. Ad esempio, alcuni tipi numerici in Microsoft SQL Server che non hanno precisione e scala definite potrebbero essere mappati aSTRINGin BigQuery. Per ulteriori informazioni, vedi Mappatura dei tipi di dati.
Opzioni di importazione dei dati
La sezione seguente fornisce informazioni sulle opzioni di importazione dati quando configuri un trasferimento di dati Microsoft SQL Server.
Configurazione TLS
Il connettore Microsoft SQL Server supporta la configurazione per la sicurezza a livello di trasporto (TLS) per criptare i trasferimenti di dati in BigQuery. Il connettore Microsoft SQL Server supporta le seguenti configurazioni TLS:
- Cripta i dati e verifica la CA e il nome host: questa modalità esegue una convalida completa del server utilizzando TLS sul protocollo TCPS. Cripta tutti i dati in transito e verifica che il certificato del server di database sia firmato da un'autorità di certificazione (CA) attendibile. Questa modalità verifica anche che il nome host a cui ti connetti corrisponda esattamente al nome comune (CN) o a un nome alternativo del soggetto (SAN) del certificato del server. Questa modalità impedisce
agli autori di attacchi di utilizzare un certificato valido per un dominio diverso per impersonare
il tuo server di database.
- Se il nome host non corrisponde al CN o al SAN del certificato, la connessione non va a buon fine. Devi configurare una risoluzione DNS in modo che corrisponda al certificato o utilizzare una modalità di sicurezza diversa.
- Utilizza questa modalità per l'opzione più sicura per prevenire gli attacchi man-in-the-middle (MITM).
- Cripta i dati e verifica solo la CA: questa modalità cripta tutti i dati utilizzando TLS
sul protocollo TCPS e verifica che il certificato del server sia firmato da
una CA di cui il client si fida. Tuttavia, questa modalità non verifica
il nome host del server. Questa modalità si connette correttamente finché il certificato è valido
e rilasciato da un'autorità di certificazione attendibile, indipendentemente dal fatto che il nome host nel
certificato corrisponda al nome host a cui ti stai connettendo.
- Utilizza questa modalità se vuoi assicurarti di connetterti a un server il cui certificato è firmato da una CA attendibile, ma il nome host non è verificabile o non hai il controllo sulla configurazione del nome host.
- Solo crittografia: questa modalità cripta tutti i dati trasferiti tra il client e il server. Non esegue alcuna convalida di certificati o nomi host.
- Questa modalità offre un certo livello di sicurezza proteggendo i dati in transito, ma può essere vulnerabile agli attacchi PITM.
- Utilizza questa modalità se devi assicurarti che tutti i dati siano criptati, ma non puoi o non vuoi verificare l'identità del server. Ti consigliamo di utilizzare questa modalità quando lavori con VPC privati.
- Nessuna crittografia o verifica: questa modalità non cripta alcun dato e
non esegue alcuna verifica di certificati o nomi host. Tutti i dati vengono inviati come
testo normale.
- Non consigliamo di utilizzare questa modalità in un ambiente in cui vengono gestiti dati sensibili.
- Consigliamo di utilizzare questa modalità solo per scopi di test su una rete isolata in cui la sicurezza non è un problema.
Certificato del server attendibile (PEM)
Se utilizzi la modalità Cripta i dati e verifica CA e nome host o la modalità Cripta i dati e verifica CA, puoi anche fornire uno o più certificati codificati in formato PEM. Questi certificati sono necessari in alcuni scenari in cui BigQuery Data Transfer Service deve verificare l'identità del server di database durante la connessione TLS:
- Se utilizzi un certificato firmato da una CA privata all'interno della tua organizzazione o un certificato autofirmato, devi fornire la catena di certificati completa o il singolo certificato autofirmato. Questo è necessario per i certificati emessi da CA interne di servizi di provider di cloud gestiti, come Amazon Relational Database Service (RDS).
- Se il certificato del server di database è firmato da una CA pubblica (ad esempio, Let's Encrypt, DigiCert o GlobalSign), non devi fornire un certificato. I certificati radice per queste CA pubbliche sono preinstallati e considerati attendibili da BigQuery Data Transfer Service.
Puoi fornire certificati con codifica PEM nel campo Certificato PEM attendibile quando crei una configurazione di trasferimento Microsoft SQL Server, con i seguenti requisiti:
- Il certificato deve essere una catena di certificati con codifica PEM valida.
- Il certificato deve essere completamente corretto. Eventuali certificati mancanti nella catena o contenuti errati causano l'interruzione della connessione TLS.
- Per un singolo certificato, puoi fornire un certificato autofirmato singolo dal server di database.
- Per una catena di certificati completa emessa da una CA privata, devi fornire la catena di attendibilità completa. Sono inclusi il certificato del server di database e tutti i certificati CA intermedi e radice.
Prima di iniziare
Prima di poter pianificare un trasferimento di dati Microsoft SQL Server, devi soddisfare i seguenti prerequisiti.
Prerequisiti di Microsoft SQL Server
Devi aver creato un account utente nel database Microsoft SQL Server. Per saperne di più, consulta Creare un utente con un accesso.
Prerequisiti di BigQuery
- Verifica di aver completato tutte le azioni necessarie per attivare BigQuery Data Transfer Service.
- Crea un set di dati BigQuery per archiviare i dati.
Ruoli obbligatori
Per ottenere le autorizzazioni
necessarie per creare un trasferimento di dati Microsoft SQL Server,
chiedi all'amministratore di concederti il
ruolo IAM Amministratore BigQuery (roles/bigquery.admin)
nel tuo progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare un trasferimento di dati Microsoft SQL Server. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare un trasferimento di dati Microsoft SQL Server sono necessarie le seguenti autorizzazioni:
-
bigquery.transfers.update -
bigquery.datasets.get
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Configurazione di rete
Devi configurare configurazioni di rete specifiche quando non è disponibile un indirizzo IP pubblico per la connessione al database Microsoft SQL Server. Per maggiori informazioni, consulta le sezioni seguenti:
- Configura una connessione all'istanza Google Cloud
- Configura una connessione ad AWS
- Configurare una connessione ad Azure
Configurare un trasferimento di dati Microsoft SQL Server
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina Trasferimenti di dati.
Fai clic su Crea trasferimento.
Nella sezione Tipo di origine, per Origine, seleziona Microsoft SQL Server.
Nella sezione Dettagli origine dati, segui questi passaggi:
- Per Collegamento di rete, seleziona un collegamento di rete esistente o fai clic su Crea collegamento di rete.
- In Host, inserisci il nome host o l'indirizzo IP del database Microsoft SQL Server.
- In Numero porta, inserisci il numero di porta per il database Microsoft SQL Server.
- In Nome database, inserisci il nome del database Microsoft SQL Server.
- In Nome utente, inserisci il nome utente dell'utente Microsoft SQL Server che avvia la connessione al database Microsoft SQL Server.
- Per Password, inserisci la password dell'utente Microsoft SQL Server che avvia la connessione al database Microsoft SQL Server.
- Per Modalità TLS, seleziona un'opzione dal menu. Per scoprire di più sulle modalità TLS, consulta Configurazione TLS.
- Per Certificato PEM attendibile, inserisci il certificato pubblico dell'autorità di certificazione (CA) che ha emesso il certificato TLS del server di database. Per scoprire di più, vedi Certificato del server attendibile (PEM).
- Per Oggetti Microsoft SQL Server da trasferire, sfoglia la tabella Microsoft SQL Server o inserisci manualmente i nomi delle tabelle necessarie per il trasferimento.
Nella sezione Impostazioni destinazione, per Set di dati, seleziona il set di dati che hai creato per archiviare i dati oppure fai clic su Crea nuovo set di dati e creane uno da utilizzare come set di dati di destinazione.
Nella sezione Nome configurazione di trasferimento, per Nome visualizzato, inserisci un nome per il trasferimento. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.
Nella sezione Opzioni di pianificazione, segui questi passaggi:
- Seleziona una frequenza di ripetizione. Se selezioni l'opzione Ore, Giorni (impostazione predefinita), Settimane o Mesi, devi anche specificare una frequenza. Puoi anche selezionare l'opzione Personalizzata per creare una frequenza di ripetizione più specifica. Se selezioni l'opzione On demand, questo trasferimento di dati viene eseguito solo quando attivi manualmente il trasferimento.
- Se applicabile, seleziona l'opzione Inizia ora o Inizia all'ora impostata e fornisci una data di inizio e un'ora di esecuzione.
(Facoltativo) Nella sezione Opzioni di notifica, segui questi passaggi:
- Per attivare le notifiche via email, fai clic sul pulsante di attivazione/disattivazione Notifiche via email. Quando attivi questa opzione, l'amministratore del trasferimento riceve una notifica via email quando l'esecuzione di un trasferimento non riesce.
- Per configurare le notifiche di esecuzione di Pub/Sub per il trasferimento, fai clic sul pulsante di attivazione/disattivazione Notifiche Pub/Sub per attivarlo. Puoi selezionare il nome del tuo argomento o fare clic su Crea un argomento per crearne uno.
(Facoltativo) Nella sezione Opzioni avanzate, seleziona un tipo di crittografia per questo trasferimento. Puoi selezionare una chiave Google-owned and Google-managed encryption key o una chiave Cloud Key Management Service di proprietà del cliente. Per saperne di più sulle chiavi di crittografia, consulta Chiavi di crittografia gestite dal cliente (CMEK).
Fai clic su Salva.
bq
Inserisci il comando bq mk
e fornisci il flag di creazione del trasferimento --transfer_config:
bq mk \ --transfer_config \ --project_id=PROJECT_ID \ --data_source=DATA_SOURCE \ --display_name=DISPLAY_NAME \ --target_dataset=DATASET \ --params='PARAMETERS'
Sostituisci quanto segue:
- (Facoltativo)
PROJECT_ID: l'ID progetto Google Cloud . Se non viene fornito il flag--project_idper specificare un progetto particolare, viene utilizzato il progetto predefinito. DATA_SOURCE: l'origine dati, ovverosqlserver.DISPLAY_NAME: il nome visualizzato per la configurazione del trasferimento dei dati. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.DATASET: il set di dati di destinazione per la configurazione del trasferimento dei dati.PARAMETERS: i parametri per la configurazione del trasferimento creata in formato JSON. Ad esempio:--params='{"param":"param_value"}'. Di seguito sono riportati i parametri per un trasferimento Microsoft SQL Server:connector.networkAttachment(facoltativo): il nome dell'allegato di rete a cui connettersi al database Microsoft SQL Server.connector.database: il nome del database Microsoft SQL Server.connector.endpoint.host: il nome host o l'indirizzo IP del database.connector.endpoint.port: il numero di porta del database.connector.authentication.username: il nome utente dell'utente del database.connector.authentication.password: la password dell'utente del database.connector.tls.mode: specifica una configurazione TLS da utilizzare con questo trasferimento:ENCRYPT_VERIFY_CA_AND_HOSTper criptare i dati e verificare la CA e il nome hostENCRYPT_VERIFY_CAper criptare i dati e verificare solo la CAENCRYPT_VERIFY_NONEsolo per la crittografia dei datiDISABLEper nessuna crittografia o verifica
connector.tls.trustedServerCertificate: (facoltativo) fornisci uno o più certificati codificati in formato PEM. Obbligatorio solo se il valore diconnector.tls.modeèENCRYPT_VERIFY_CA_AND_HOSToENCRYPT_VERIFY_CA.assets: un elenco dei nomi delle tabelle Microsoft SQL Server da trasferire dal database Microsoft SQL Server nell'ambito del trasferimento.
Ad esempio, il seguente comando crea un trasferimento Microsoft SQL Server
denominato 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"}'
Per eseguire manualmente un trasferimento di dati al di fuori della pianificazione regolare, puoi avviare un'esecuzione di backfill.
Mappatura dei tipi di dati
La seguente tabella mappa i tipi di dati di Microsoft SQL Server ai corrispondenti tipi di dati BigQuery:
| Tipo di dati Microsoft SQL Server | Tipo di dati 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 |
I tipi di dati json e vector sono supportati solo in Azure.
Il tipo di dati JSON è supportato nei database Azure SQL e nelle istanze gestite Azure SQL configurate con il criterio di aggiornamento sempre aggiornato. Il tipo di dati JSON non è supportato nelle istanze gestite di Azure SQL configurate con il criterio di aggiornamento di Microsoft SQL Server 2022.
Microsoft SQL Server archivia JSON come NVARCHAR(MAX) e non come tipo JSON. Ti consigliamo di utilizzare CHECK (ISJSON(json_col) = 1) per la convalida e JSON_VALUE() per le query.
Microsoft SQL Server non supporta i vettori per il tipo di dati
vector. Ti consigliamo di archiviare i vettori come array JSON in
NVARCHAR(MAX) e di utilizzare JSON_VALUE() per l'estrazione, con calcoli manuali FLOAT
per la somiglianza.
Risoluzione dei problemi
Per risolvere i problemi relativi al trasferimento dei dati, consulta Problemi di trasferimento di Microsoft SQL Server.
Prezzi
Il trasferimento dei dati di Microsoft SQL Server in BigQuery non prevede costi durante l'anteprima di questa funzionalità.
Passaggi successivi
- Per una panoramica di BigQuery Data Transfer Service, consulta Che cos'è BigQuery Data Transfer Service?.
- Per informazioni sull'utilizzo dei trasferimenti, tra cui come ottenere informazioni su una configurazione di trasferimento, elencare le configurazioni di trasferimento e visualizzare la cronologia di esecuzione di un trasferimento, consulta Gestire i trasferimenti.