Configurare PolyBase per l'accesso a dati esterni in SQL Server

Si applica a:SQL Server

Questo articolo illustra come usare PolyBase in un'istanza di SQL Server per eseguire query sui dati esterni in un'altra istanza di SQL Server.

Prerequisiti

Se PolyBase non è stato installato, vedere Installazione di PolyBase. Nell'articolo sull'installazione vengono illustrati i prerequisiti. Dopo l'installazione, assicurarsi anche di abilitare PolyBase.

L'origine dati esterna di SQL Server usa l'autenticazione SQL.

Prima di creare credenziali con ambito database, è necessario creare una chiave master.

Configurare un'origine dati esterna di SQL Server

Per eseguire query sui dati da un'origine dati SQL Server, è necessario creare tabelle esterne per fare riferimento ai dati esterni. In questa sezione è disponibile codice di esempio per creare queste tabelle esterne.

Per prestazioni ottimali delle query, creare le statistiche sulle colonne delle tabelle esterne, in particolare quelle usate per join, filtri e aggregazioni.

In questa sezione vengono usati i comandi Transact-SQL seguenti:

  1. Creare le credenziali con ambito database per l'accesso all'origine SQL Server. Nell'esempio seguente vengono create le credenziali per l'origine dati esterna con IDENTITY = 'username' e SECRET = 'password'.

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

    Importante

    Il connettore ODBC SQL per PolyBase supporta solo l'autenticazione di base e non l'autenticazione Kerberos.

  2. Creare un'origine dati esterna con CREATE EXTERNAL DATA SOURCE. L'esempio seguente:

    • Crea un'origine dati esterna denominata SQLServerInstance.
    • Identifica l'origine dati esterna (LOCATION = '<vendor>://<server>[:<port>]'). Nell'esempio punta a un'istanza predefinita di SQL Server.
    • Indica se eseguire il push del calcolo nell'origine (PUSHDOWN). PUSHDOWN è ON per impostazione predefinita.

    Infine, l'esempio usa le credenziali create in precedenza.

    CREATE EXTERNAL DATA SOURCE SQLServerInstance
        WITH ( LOCATION = 'sqlserver://SqlServer',
        PUSHDOWN = ON,
        CREDENTIAL = SQLServerCredentials);
    
  3. Creare la tabella esterna con CREATE EXTERNAL TABLE L'istruzione richiede regole di confronto e il percorso richiede la notazione in tre parti (<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. Facoltativamente, creare statistiche per una tabella esterna.

Per prestazioni ottimali delle query, creare le statistiche sulle colonne delle tabelle esterne, in particolare quelle usate per filtri di join e aggregazioni.

  CREATE STATISTICS statistics_name ON customer (C_CUSTKEY)
  WITH FULLSCAN;

Importante

Dopo aver creato un'origine dati esterna, è possibile usare il comando CREATE EXTERNAL TABLE per creare una tabella disponibile per query su tale origine.

Tipi compatibili con il connettore SQL Server

È anche possibile usare il connettore SQL Server (sqlserver://) per accedere alle database SQL di Azure. A questo scopo, seguire gli stessi passaggi elencati in precedenza. Assicurarsi che le credenziali dell'ambito database, l'indirizzo del server, la porta e la stringa del percorso siano correlati a quelli dell'origine dati di Azure SQL Database a cui si desidera connettersi.

Passaggi successivi

Per altre esercitazioni sulla creazione di origini dati esterne e tabelle esterne in un'ampia gamma di origini dati, vedere le Informazioni di riferimento su Transact-SQL per PolyBase.

Per altre informazioni su PolyBase, vedere Che cos'è PolyBase?.