設定 PolyBase 存取 SQL Server 中的外部資料

適用於:SQL Server

本文說明如何在 SQL Server 執行個體上使用 PolyBase 查詢位於另一個 SQL Server 執行個體中的外部資料。

Prerequisites

如果您尚未安裝 PolyBase,請參閱 PolyBase 安裝。 安裝文章說明必要條件。 安裝後,也請務必啟用 PolyBase

SQL Server 的外部資料源使用 SQL 驗證。

在建立資料庫範圍認證之前,必須建立主要金鑰

設定 SQL Server 外部資料來源

若要查詢來自 SQL Server 資料來源的資料,您必須建立外部資料表參考外部資料。 本節提供建立這些外部資料表的範例程式碼。

如需最佳查詢效能,請在外部資料表資料行上建立統計資料 (尤其是用於聯結、篩選和彙總的資料行)。

本節中使用下列 Transact-SQL 命令:

  1. 建立資料庫範圍認證以存取 SQL Server 來源。 下列範例使用 IDENTITY = 'username'SECRET = 'password' 來建立外部資料來源認證。

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

    重要

    適用於 PolyBase 的 SQL ODBC 連接器僅支援基本驗證,不支援 Kerberos 驗證。

  2. 使用 CREATE EXTERNAL DATA SOURCE 建立外部資料來源。 下列範例將:

    • 建立名為 SQLServerInstance 的外部資料來源。
    • 指定外部資料來源 (LOCATION = '<vendor>://<server>[:<port>]')。 在範例中,它會指向 SQL Server 的預設執行個體。
    • 識別是否應將計算推送至來源 (PUSHDOWN)。 PUSHDOWN 預設為 ON

    最後,範例會使用先前建立的認證。

    CREATE EXTERNAL DATA SOURCE SQLServerInstance
        WITH ( LOCATION = 'sqlserver://SqlServer',
        PUSHDOWN = ON,
        CREDENTIAL = SQLServerCredentials);
    
  3. 使用 CREATE EXTERNAL TABLE 建立外部資料表。這個陳述式需要定序,而且位置須使用三部分標記法 (<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. (選擇性) 在外部資料表上建立統計資料。

如需最佳查詢效能,請在外部資料表資料行上建立統計資料 (尤其是用於聯結、篩選和彙總的資料行)。

  CREATE STATISTICS statistics_name ON customer (C_CUSTKEY)
  WITH FULLSCAN;

重要

當您建立外部資料來源之後,可以使用 CREATE EXTERNAL TABLE 命令透過該來源建立可查詢的資料表。

SQL Server 連接器相容類型

您也可以利用 SQL Server (sqlserver://) 連接器存取 Azure SQL Database。 若要完成此工作,請遵循上述相同步驟進行。 請確定資料庫範圍認證、伺服器位址、連接埠及位置字串皆與您想要連線的 Azure SQL Database 資料來源相互關聯。

下一步

如需將外部資料來源和外部資料表建立到各種資料來源的其他教學課程,請參閱 PolyBase Transact-SQL 參考

若要深入了解 PolyBase,請參閱 SQL Server PolyBase 概觀