SQL Server : un Data WareHouse avec les Ad Hoc Distributed Queries

C’est une des fonctionnalités les plus intéressantes de SQL Server. Sans doute une des plus méconnues. Les ad hoc distributed  queries permettent, à partir de liens ODBC, d’interroger et de rapatrier des données venant de n’importe quel moteur de base de données dans un Dataware House constitué à partir d’une instance SQL Server. Elles sont une excellente alternative à l’utilisation d’un ETL comme Talend Studio ou les packages SSIS, dès lors que vous savez jouer du MERGE, du INSERT INTO et du SET IDENTITY_INSERT.

L’exemple ci-dessous va vous montrer comment intégrer des données venant de MySQL  dans SQL Server.

Installer le driver ODBC

Vous devez au préalable disposer du driver ODBC 64 bits sur votre machine Windows Server vous permettant de communiquer avec votre base de données distante :

Créer un connecteur ODBC

Pour vous éviter de la complication syntaxique inutile lors de l’écriture de votre ad hoc distributed query, le plus simple est encore de créer un Data Source Name à l’aide de la commande odbcad32.exe. Allez dans l’onglet Source de données système et choisissez Ajouter. Spécifiez tout d’abord votre driver ODBC correspondant à la base de données distante.

odbcad32 > Source de données système > Ajouter > Créer une nouvelle source de données

Entrez les informations nécessaires pour vous connecter à la base distante et appuyez sur Test pour vérifier la connexion.

MySQL Connector/ODBC Data Source Configuration

Activer la prise en charge des Ad Hoc Distributed Queries

Par défaut, la prise en charge des requêtes de type Ad Hoc Distributed Queries n’est pas activée sur les moteurs SQL Server. Pour les activer, exécutez à partir de l’éditeur de requêtes SSMS :

sp_configure 'show advanced options', 1; 
RECONFIGURE;
GO 
sp_configure 'Ad Hoc Distributed Queries', 1; 
RECONFIGURE; 
GO 

La requête de type Ad Hoc Query

Vous disposez de deux syntaxes. Après avoir constitué le Data Source Name, vous pouvez interroger la table actor de la base sakila de MySQL comme suit :

SELECT 
  src.*
FROM 
  OPENROWSET
  (
    'MSDASQL',
    'DSN=mysql_localhost_sakila',
   'SELECT * FROM actor'
  ) as src

Sans DSN, l’écriture de la requête est un peu plus compliquée  :

SELECT 
  src.*
FROM 
  OPENROWSET
  (
    'MSDASQL',
    'Driver={MySQL ODBC 8.0 ANSI Driver};Server=localhost;Database=sakila;User=root;Password=root;', 
    'SELECT * FROM actor'
  ) as src

SQL Server : un DataWare House avec les Ad Hoc Distributed Queries

 

Base de données  / Data WareHouse ETL SQL Server 

Commentaires

Pas encore de commentaire.

Laisser un commentaire

(requis)

(requis)