Konfigurieren von PolyBase für den Zugriff auf externe Daten mit generischen ODBC-Typen
Gilt für: SQL Server
PolyBase ermöglicht ab SQL Server 2019 die Anbindung an ODBC-kompatible Datenquellen über den ODBC-Connector.
Dieser Artikel veranschaulicht, wie Sie die Konnektivität mithilfe einer ODBC-Datenquelle herstellen. Als Beispiel wird ein bestimmter ODBC-Treiber verwendet. Wenden Sie sich für spezifische Beispiele an Ihren ODBC-Anbieter. Die entsprechenden Optionen für die Verbindungszeichenfolge finden Sie in der ODBC-Treiberdokumentation für Ihre Datenquelle. Die in diesem Artikel veranschaulichten Beispiele gelten möglicherweise nicht für alle ODBC-Treiber.
Voraussetzungen
Hinweis
Dieses Feature erfordert SQL Server unter Windows.
PolyBase muss für Ihre SQL Server-Instanz installiert und aktiviert sein (PolyBase-Installation).
Bevor datenbankweit gültige Anmeldeinformationen erstellt werden können, muss ein Hauptschlüssel erstellt werden.
Installieren des ODBC-Treibers
Laden Sie den ODBC-Treiber der Datenquelle herunter, die Sie mit den PolyBase-Knoten verbinden möchten, und installieren Sie ihn. Sobald der Treiber installiert ist, können Sie ihn unter ODBC Data Source Administrator (ODBC-Datenquellenadministrator) anzeigen und testen.
Im obigen Beispiel ist der Name des Treibers rot eingekreist. Verwenden Sie diesen Namen beim Erstellen der externen Datenquelle.
Wichtig
Aktivieren Sie das Verbindungspooling, um die Abfrageleistung zu verbessern. Dies erfolgt über ODBC Data Source Administrator (ODBC-Datenquellenadministrator).
Erstellen von abhängigen Objekten in SQL Server
Zum Verwenden der ODBC-Datenquelle müssen zunächst einige Objekte erstellt werden, um die Konfiguration abzuschließen.
In diesem Abschnitt werden die folgenden Transact-SQL-Befehle verwendet:
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- ERSTELLEN EINER EXTERNEN DATENQUELLE (Transact-SQL)
Erstellen Sie datenbankweit gültige Anmeldeinformationen für den Zugriff auf die ODBC-Quelle.
CREATE DATABASE SCOPED CREDENTIAL [<credential_name>] WITH IDENTITY = '<username>', Secret = '<password>';
Im folgenden Beispiel werden Anmeldeinformationen namens
credential_name
mit der Identitätusername
und einem komplexen Kennwort erstellt.CREATE DATABASE SCOPED CREDENTIAL credential_name WITH IDENTITY = 'username', Secret = 'BycA4ZjrE#*2W%!';
Erstellen Sie mit CREATE EXTERNAL DATA SOURCE eine externe Datenquelle.
CREATE EXTERNAL DATA SOURCE [<external_data_source_name>] WITH ( LOCATION = 'odbc://<ODBC server address>[:<port>]', CONNECTION_OPTIONS = 'Driver={<Name of Installed Driver>}; ServerNode = <name of server address>:<Port>', -- PUSHDOWN = [ON] | OFF, CREDENTIAL = [<credential_name>] );
Im folgenden Beispiel wird eine externe Datenquelle erstellt:
- Sie wird
external_data_source_name
benannt. - Sie befindet sich auf dem ODBC-Server
SERVERNAME
auf Port4444
. - Sie stellt eine Verbindung mit
CData ODBC Driver For SAP 2015
her. Dies ist der Treiber, der im Abschnitt Installieren des ODBC-Treibers erstellt wurde. - Auf
ServerNode
sap_server_node
Port5555
- Sie wird so konfiguriert, dass die Verarbeitung an den Server weitergegeben wird (
PUSHDOWN = ON
). - Die
credential_name
-Anmeldeinformationen werden verwendet.
CREATE EXTERNAL DATA SOURCE external_data_source_name WITH ( LOCATION = 'odbc://SERVERNAME:4444', CONNECTION_OPTIONS = 'Driver={CData ODBC Driver For SAP 2015}; ServerNode = sap_server_node:5555', PUSHDOWN = ON, CREDENTIAL = credential_name );
- Sie wird
Erstellen einer externen Tabelle
Sobald Sie die abhängigen Objekte erstellt haben, können Sie mit T-SQL eine externe Tabelle erstellen.
In diesem Abschnitt werden die folgenden Transact-SQL-Befehle verwendet:
Erstellen Sie mindestens eine externe Tabelle.
Erstellen Sie eine externe Tabelle. Sie müssen mit dem
DATA_SOURCE
-Argument auf die oben erstellte Datenquelle verweisen und die Quelltabelle alsLOCATION
angeben. Sie müssen nicht auf alle Spalten verweisen, aber Sie müssen sicherstellen, dass die Typen richtig zugeordnet sind.CREATE EXTERNAL TABLE [<your_table_name>] ( [<col1_name>] DECIMAL(38) NOT NULL, [<col2_name>] DECIMAL(38) NOT NULL, [<col3_name>] CHAR COLLATE Latin1_General_BIN NOT NULL ) WITH ( LOCATION='<sap_table_name>', DATA_SOURCE= [<external_data_source_name>] ) ;
Hinweis
Beachten Sie, dass Sie die abhängigen Objekte für alle externen Tabellen wiederverwenden können, die diese externe Datenquelle nutzen.
Optional: Erstellen Sie Statistiken für eine externe Tabelle.
Für eine optimale Abfrageleistung wird empfohlen, Statistiken für externe Tabellenspalten zu erstellen – insbesondere für diejenigen, die für Joins, Filter und Aggregate verwendet werden.
CREATE STATISTICS statistics_name ON contact (FirstName) WITH FULLSCAN;
Nächste Schritte
Weitere Informationen zu PolyBase finden Sie in der Übersicht zu SQL Server-PolyBase.
Weitere Lernprogramme zum Erstellen externer Datenquellen und externer Tabellen für eine Vielzahl von Datenquellen finden Sie unter PolyBase Transact-SQL-Referenz.