Configurer PolyBase pour accéder à des données externes dans SQL Server

S'applique à : SQL Server

Cet article explique comment utiliser PolyBase sur une instance de SQL Server pour interroger des données externes dans une autre instance SQL Server.

Prérequis

Si vous n’avez pas installé PolyBase, consultez Installation de PolyBase. Cet article décrit les prérequis pour l’installation. Une fois l’installation terminée, veillez également à activer Polybase.

La source de données externe SQL Server utilise l’authentification SQL.

La clé principale doit être créée avant les informations d’identification incluses dans l’étendue de la base de données.

Configurer une source de données externes SQL Server

Pour interroger les données d’une source de données SQL Server, vous devez créer des tables externes pour référencer les données externes. Cette section fournit un exemple de code pour créer ces tables externes.

Pour des performances de requêtes optimales, créez des statistiques sur les colonnes de tables externes, en particulier celles utilisées pour les jointures, les filtres et les agrégats.

Les commandes Transact-SQL suivantes sont utilisées dans cette section :

  1. Créez des informations d’identification incluses dans l’étendue de la base de données pour accéder à la source SQL Server. L’exemple suivant crée des informations d’identification pour la source de données externe avec IDENTITY = 'username' et SECRET = 'password'.

    CREATE DATABASE SCOPED CREDENTIAL SqlServerCredentials
    WITH IDENTITY = 'username', SECRET = 'password';
    

    Important

    Le connecteur ODBC SQL pour Polybase prend uniquement en charge l’authentification de base (l’authentification Kerberos n’est pas prise en charge).

  2. Créez une source de données externe avec CREATE EXTERNAL DATA SOURCE. L’exemple suivant :

    • Crée une source de données externe pour nommée SQLServerInstance.
    • Identifie la source de données externe (LOCATION = '<vendor>://<server>[:<port>]'). Dans l’exemple, elle pointe vers une instance par défaut de SQL Server.
    • Indique si le calcul doit faire l’objet d’un push vers la source (PUSHDOWN). PUSHDOWN est ON par défaut.

    Pour finir, l’exemple utilise les informations d’identification créées précédemment.

    CREATE EXTERNAL DATA SOURCE SQLServerInstance
        WITH ( LOCATION = 'sqlserver://SqlServer',
        PUSHDOWN = ON,
        CREDENTIAL = SQLServerCredentials);
    
  3. Créez la table externe avec CREATE EXTERNAL TABLE. L’instruction nécessite un classement et l’emplacement nécessite une notation en trois parties (<database>.<schema>.<table>).

    CREATE EXTERNAL TABLE DatabasesExternal (
        name VARCHAR(128) COLLATE SQL_Latin1_General_CP1_CI_AS)
      WITH (LOCATION = 'master.sys.databases',
      DATA_SOURCE = SQLServerInstance);
    
  4. Éventuellement, créez des statistiques sur une table externe.

Pour des performances de requêtes optimales, créez des statistiques sur les colonnes de tables externes, en particulier celles utilisées pour les jointures, les filtres et les agrégats.

  CREATE STATISTICS statistics_name ON customer (C_CUSTKEY)
  WITH FULLSCAN;

Important

Une fois que vous avez créé une source de données externes, vous pouvez utiliser la commande CREATE EXTERNAL TABLE afin de créer une table requêtable sur cette source.

Types compatibles avec le connecteur SQL Server

Vous pouvez également utiliser le connecteur SQL Server (sqlserver://) pour accéder à la base de données Azure SQL. Pour accomplir cette tâche, suivez les étapes indiquées précédemment. Vérifiez que les informations d’identification incluses dans l’étendue de la base de données, l’adresse du serveur, le port et la chaîne d’emplacement sont bien ceux de la source de données de la base de données Azure SQL à laquelle vous souhaitez vous connecter.

Étapes suivantes

Pour plus de tutoriels sur la création de sources de données externes et de tables externes vers diverses sources de données, consultez référence PolyBase Transact-SQL.

Pour en savoir plus sur PolyBase, consultez Vue d’ensemble de SQL Server PolyBase.