Charger des données Microsoft SQL Server dans BigQuery
Vous pouvez charger des données depuis Microsoft SQL Server vers BigQuery à l'aide du connecteur du service de transfert de données BigQuery pour Microsoft SQL Server. Le connecteur Microsoft SQL Server est compatible avec les chargements de données à partir d'instances Microsoft SQL Server hébergées dans des environnements sur site et chez d'autres fournisseurs de services cloud, tels que Cloud SQL, Amazon Web Services (AWS) ou Microsoft Azure. Le service de transfert de données BigQuery vous permet de créer des tâches de transfert de données à la demande et récurrentes pour transférer des données de votre instance Microsoft SQL Server vers BigQuery.
Limites
Les tâches de transfert de données Microsoft SQL Server sont soumises aux limites suivantes :
- Le nombre de connexions simultanées à une base de données Microsoft SQL Server est limité. Par conséquent, le nombre d'exécutions de transfert simultanées vers une seule base de données Microsoft SQL Server est également limité. Assurez-vous que le nombre de jobs de transfert simultanés est inférieur au nombre maximal de connexions simultanées acceptées par la base de données Microsoft SQL Server.
- Certains types de données Microsoft SQL Server peuvent être mappés sur le type
STRINGdans BigQuery pour éviter toute perte de données. Par exemple, certains types numériques dans Microsoft SQL Server pour lesquels la précision et l'échelle ne sont pas définies peuvent être mappés surSTRINGdans BigQuery. Pour en savoir plus, consultez Mappage des types de données.
Options d'ingestion de données
La section suivante fournit des informations sur les options d'ingestion de données lorsque vous configurez un transfert de données Microsoft SQL Server.
Configuration TLS
Le connecteur Microsoft SQL Server est compatible avec la configuration de la sécurité au niveau du transport (TLS) pour chiffrer vos transferts de données vers BigQuery. Le connecteur Microsoft SQL Server est compatible avec les configurations TLS suivantes :
- Chiffrer les données et valider l'autorité de certification et le nom d'hôte : ce mode effectue une validation complète du serveur à l'aide de TLS sur le protocole TCPS. Il chiffre toutes les données en transit et vérifie que le certificat du serveur de base de données est signé par une autorité de certification (CA) de confiance. Ce mode vérifie également que le nom d'hôte auquel vous vous connectez correspond exactement au nom commun (CN) ou à un autre nom de l'objet (SAN) du certificat du serveur. Ce mode empêche les pirates informatiques d'utiliser un certificat valide pour un autre domaine afin d'usurper l'identité de votre serveur de base de données.
- Si votre nom d'hôte ne correspond pas au CN ou au SAN du certificat, la connexion échoue. Vous devez configurer une résolution DNS correspondant au certificat ou utiliser un autre mode de sécurité.
- Utilisez ce mode pour bénéficier de l'option la plus sécurisée et éviter les attaques de type "man-in-the-middle" (MITM).
- Chiffrer les données et valider uniquement l'autorité de certification : ce mode chiffre toutes les données à l'aide de TLS sur le protocole TCPS et vérifie que le certificat du serveur est signé par une autorité de certification à laquelle le client fait confiance. Toutefois, ce mode ne valide pas le nom d'hôte du serveur. Ce mode permet d'établir une connexion tant que le certificat est valide et émis par une autorité de validation de confiance, que le nom d'hôte du certificat corresponde ou non à celui auquel vous vous connectez.
- Utilisez ce mode si vous souhaitez vous assurer de vous connecter à un serveur dont le certificat est signé par une autorité de certification de confiance, mais dont le nom d'hôte n'est pas vérifiable ou dont vous ne contrôlez pas la configuration.
- Chiffrement uniquement : ce mode chiffre toutes les données transférées entre le client et le serveur. Il n'effectue aucune validation de certificat ni de nom d'hôte.
- Ce mode offre un certain niveau de sécurité en protégeant les données en transit, mais il peut être vulnérable aux attaques PITM.
- Utilisez ce mode si vous devez vous assurer que toutes les données sont chiffrées, mais que vous ne pouvez pas ou ne souhaitez pas vérifier l'identité du serveur. Nous vous recommandons d'utiliser ce mode lorsque vous travaillez avec des VPC privés.
- Aucun chiffrement ni aucune validation : ce mode ne chiffre aucune donnée et n'effectue aucune validation de certificat ni de nom d'hôte. Toutes les données sont envoyées en texte brut.
- Nous vous déconseillons d'utiliser ce mode dans un environnement où des données sensibles sont traitées.
- Nous vous recommandons de n'utiliser ce mode qu'à des fins de test sur un réseau isolé où la sécurité n'est pas un problème.
Certificat serveur approuvé (PEM)
Si vous utilisez le mode Chiffrer les données et valider l'autorité de certification et le nom d'hôte ou le mode Chiffrer les données et valider l'autorité de certification, vous pouvez également fournir un ou plusieurs certificats encodés au format PEM. Ces certificats sont requis dans certains cas où le service de transfert de données BigQuery doit vérifier l'identité de votre serveur de base de données lors de la connexion TLS :
- Si vous utilisez un certificat signé par une autorité de certification privée au sein de votre organisation ou un certificat autosigné, vous devez fournir la chaîne de certificats complète ou le certificat autosigné unique. Cela est nécessaire pour les certificats émis par les autorités de certification internes des services de fournisseurs de cloud gérés, tels qu'Amazon Relational Database Service (RDS).
- Si le certificat de votre serveur de base de données est signé par une autorité de certification publique (par exemple, Let's Encrypt, DigiCert ou GlobalSign), vous n'avez pas besoin de fournir de certificat. Les certificats racine de ces autorités de certification publiques sont préinstallés et approuvés par le service de transfert de données BigQuery.
Vous pouvez fournir des certificats encodés au format PEM dans le champ Certificat PEM approuvé lorsque vous créez une configuration de transfert Microsoft SQL Server, en respectant les exigences suivantes :
- Le certificat doit être une chaîne de certificats valide encodée au format PEM.
- Le certificat doit être entièrement correct. Toute absence de certificat dans la chaîne ou tout contenu incorrect entraîne l'échec de la connexion TLS.
- Pour un seul certificat, vous pouvez fournir un certificat autosigné unique à partir du serveur de base de données.
- Pour une chaîne de certificats complète émise par une autorité de certification privée, vous devez fournir la chaîne de confiance complète. Cela inclut le certificat du serveur de base de données, ainsi que tous les certificats CA intermédiaires et racines.
Avant de commencer
Avant de pouvoir planifier un transfert de données Microsoft SQL Server, vous devez remplir les conditions préalables suivantes.
Conditions préalables pour Microsoft SQL Server
Vous devez avoir créé un compte utilisateur dans la base de données Microsoft SQL Server. Pour en savoir plus, consultez Créer un utilisateur avec un identifiant.
Prérequis pour BigQuery
- Vérifiez que vous avez effectué toutes les actions requises pour activer le service de transfert de données BigQuery.
- Créez un ensemble de données BigQuery pour stocker vos données.
Rôles requis
Pour obtenir les autorisations nécessaires pour créer un transfert de données Microsoft SQL Server, demandez à votre administrateur de vous accorder le rôle IAM Administrateur BigQuery (roles/bigquery.admin) sur votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour créer un transfert de données Microsoft SQL Server. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour créer un transfert de données Microsoft SQL Server :
-
bigquery.transfers.update -
bigquery.datasets.get
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Configuration du réseau
Vous devez configurer des paramètres réseau spécifiques lorsqu'aucune adresse IP publique n'est disponible pour la connexion à la base de données Microsoft SQL Server. Pour en savoir plus, consultez les sections suivantes :
- Configurer une connexion à l'instance Google Cloud
- Configurer une connexion à AWS
- Configurer une connexion à Azure
Configurer un transfert de données Microsoft SQL Server
Sélectionnez l'une des options suivantes :
Console
Accédez à la page Transferts de données.
Cliquez sur Créer un transfert.
Dans la section Type de source, accédez à la liste déroulante Source, puis sélectionnez Microsoft SQL Server.
Dans la section Data source details (Détails de la source de données), procédez comme suit :
- Sous Rattachement de réseau, sélectionnez un rattachement de réseau existant ou cliquez sur Créer un rattachement de réseau.
- Pour le champ Hôte, saisissez le nom d'hôte ou l'adresse IP de la base de données Microsoft SQL Server.
- Pour Numéro de port, saisissez le numéro de port de la base de données Microsoft SQL Server.
- Dans le champ Nom de la base de données, saisissez le nom de la base de données Microsoft SQL Server.
- Pour Nom d'utilisateur, saisissez le nom d'utilisateur Microsoft SQL Server qui établit la connexion à la base de données Microsoft SQL Server.
- Pour Mot de passe, saisissez le mot de passe de l'utilisateur Microsoft SQL Server qui établit la connexion à la base de données Microsoft SQL Server.
- Pour Mode TLS, sélectionnez une option dans le menu. Pour en savoir plus sur les modes TLS, consultez Configuration TLS.
- Pour Certificat PEM approuvé, saisissez le certificat public de l'autorité de certification qui a émis le certificat TLS du serveur de base de données. Pour en savoir plus, consultez Certificat de serveur approuvé (PEM).
- Pour Objets Microsoft SQL Server à transférer, parcourez le tableau Microsoft SQL Server ou saisissez manuellement les noms des tables requises pour le transfert.
Dans la section Paramètres de destination, pour le champ Ensemble de données, sélectionnez l'ensemble de données que vous avez créé pour stocker vos données, ou cliquez sur Créer un ensemble de données et créez-en un à utiliser comme ensemble de données de destination.
Dans la section Nom de la configuration de transfert, sous Nom à afficher, saisissez le nom du transfert. Ce nom peut correspondre à n'importe quelle valeur permettant d'identifier le transfert si vous devez le modifier ultérieurement.
Dans la section Options de programmation, procédez comme suit :
- Sélectionnez une fréquence de répétition. Si vous sélectionnez l'option Heures, Jours (par défaut), Semaines ou Mois, vous devez également spécifier une fréquence. Vous pouvez également sélectionner l'option Personnalisée pour créer une fréquence de répétition plus spécifique. Si vous sélectionnez l'option À la demande, le transfert de données s'exécute uniquement lorsque vous le déclenchez manuellement.
- Le cas échéant, sélectionnez l'option Commencer ou Commencer à l'heure définie, puis indiquez une date de début et une heure d'exécution.
Facultatif : dans la section Options de notification, procédez comme suit :
- Pour activer les notifications par e-mail, cliquez sur le bouton Notifications par e-mail pour l'activer. Lorsque vous activez cette option, l'administrateur de transfert reçoit une notification par e-mail en cas d'échec de l'exécution du transfert.
- Pour configurer les notifications d'exécution Pub/Sub pour votre transfert, activez l'option Notifications Pub/Sub. Vous pouvez sélectionner le nom de votre sujet ou cliquer sur Créer un sujet pour en créer un.
(Facultatif) Dans la section Options avancées, sélectionnez un type de chiffrement pour ce transfert. Vous pouvez sélectionner une clé Cloud Key Management Service appartenant à Google ou à un client. Google-owned and Google-managed encryption keyPour en savoir plus sur les clés de chiffrement, consultez Clés de chiffrement gérées par le client (CMEK).
Cliquez sur Enregistrer.
bq
Saisissez la commande bq mk, puis spécifiez l'indicateur de création de transfert --transfer_config :
bq mk \ --transfer_config \ --project_id=PROJECT_ID \ --data_source=DATA_SOURCE \ --display_name=DISPLAY_NAME \ --target_dataset=DATASET \ --params='PARAMETERS'
Remplacez les éléments suivants :
PROJECT_ID(facultatif) : ID de votre projet Google Cloud . Si l'indicateur--project_idn'est pas fourni pour spécifier un projet particulier, le projet par défaut est utilisé.DATA_SOURCE: source de données, qui estsqlserver.DISPLAY_NAME: nom à afficher de la configuration de transfert de données. Ce nom peut correspondre à toute valeur permettant d'identifier le transfert si vous devez le modifier ultérieurement.DATASET: ensemble de données cible de la configuration de transfert de données.PARAMETERScorrespond aux paramètres de la configuration de transfert créée, au format JSON. Exemple :--params='{"param":"param_value"}'. Voici les paramètres d'un transfert Microsoft SQL Server :connector.networkAttachment(facultatif) : nom du rattachement de réseau permettant de se connecter à la base de données Microsoft SQL Server.connector.database: nom de la base de données Microsoft SQL Server.connector.endpoint.host: nom d'hôte ou adresse IP de la base de données.connector.endpoint.port: numéro de port de la base de données.connector.authentication.username: nom d'utilisateur de la base de données.connector.authentication.password: mot de passe de l'utilisateur de la base de données.connector.tls.mode: spécifiez une configuration TLS à utiliser avec ce transfert :ENCRYPT_VERIFY_CA_AND_HOSTpour chiffrer les données et valider l'autorité de certification et le nom d'hôteENCRYPT_VERIFY_CApour chiffrer les données et valider uniquement l'autorité de certificationENCRYPT_VERIFY_NONEpour le chiffrement des données uniquementDISABLEpour aucune vérification ni aucun chiffrement
connector.tls.trustedServerCertificate: (facultatif) fournissez un ou plusieurs certificats encodés au format PEM. Obligatoire uniquement si la valeur deconnector.tls.modeestENCRYPT_VERIFY_CA_AND_HOSTouENCRYPT_VERIFY_CA.assets: liste des noms des tables Microsoft SQL Server à transférer depuis la base de données Microsoft SQL Server dans le cadre du transfert.
Par exemple, la commande suivante crée un transfert Microsoft SQL Server appelé 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"}'
Pour exécuter manuellement un transfert de données en dehors de votre calendrier habituel, vous pouvez lancer une exécution de remplissage.
Mappage des types de données
Le tableau suivant mappe les types de données Microsoft SQL Server avec les types de données BigQuery correspondants :
| Type de données Microsoft SQL Server | Type de données 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 |
Les types de données json et vector ne sont compatibles qu'avec Azure.
Le type de données JSON est compatible avec les bases de données Azure SQL et les instances gérées Azure SQL configurées avec la stratégie de mise à jour "Toujours à jour". Le type de données JSON n'est pas compatible avec les instances gérées Azure SQL configurées avec la stratégie de mise à jour Microsoft SQL Server 2022.
Microsoft SQL Server stocke le format JSON en tant que NVARCHAR(MAX), et non en tant que type JSON. Nous vous recommandons d'utiliser CHECK (ISJSON(json_col) = 1) pour la validation et JSON_VALUE() pour les requêtes.
Microsoft SQL Server n'est pas compatible avec les vecteurs pour le type de données vector. Nous vous recommandons de stocker les vecteurs sous forme de tableaux JSON dans NVARCHAR(MAX) et d'utiliser JSON_VALUE() pour l'extraction, avec des calculs manuels FLOAT pour la similarité.
Résoudre les problèmes
Pour résoudre les problèmes liés à votre transfert de données, consultez Problèmes de transfert avec Microsoft SQL Server.
Tarifs
Le transfert de données Microsoft SQL Server vers BigQuery est sans frais tant que cette fonctionnalité est en version preview.
Étapes suivantes
- Pour une vue d'ensemble du service de transfert de données BigQuery, consultez Qu'est-ce que le service de transfert de données BigQuery ?.
- Pour plus d'informations sur l'utilisation des transferts, y compris l'obtention d'informations sur une configuration de transfert, la liste des configurations de transfert et l'affichage de l'historique d'exécution d'un transfert, consultez la page Gérer les transferts.