CREATE EXTERNAL DATA SOURCE (Transact-SQL)CREATE EXTERNAL DATA SOURCE (Transact-SQL)

Erstellt eine externe Datenquelle für Abfragen mithilfe von SQL Server, SQL-Datenbank, Azure Synapse Analytics oder Analytics Platform System (Parallel Data Warehouse oder PDW).Creates an external data source for querying using SQL Server, SQL Database, Azure Synapse Analytics, or Analytics Platform System (Parallel Data Warehouse or PDW).

Dieser Artikel stellt die Syntax, Argumente, Anweisungen, Berechtigungen und Beispiele für das SQL-Produkt Ihrer Wahl bereit.This article provides the syntax, arguments, remarks, permissions, and examples for whichever SQL product you choose.

Weitere Informationen zu Syntaxkonventionen finden Sie unter Transact-SQL-Syntaxkonventionen.For more information about the syntax conventions, see Transact-SQL Syntax Conventions.

Auswählen eines ProduktsSelect a product

Wählen Sie in der folgenden Zeile den Namen des Produkts aus, an dem Sie interessiert sind. Dann werden nur Informationen zu diesem Produkt angezeigt.In the following row, select the product name you're interested in, and only that product’s information is displayed.

* SQL Server *  * SQL Server *  

 

Übersicht: SQL ServerOverview: SQL Server

Erstellt eine externe Datenquelle für PolyBase-Abfragen.Creates an external data source for PolyBase queries. Externe Datenquellen werden zum Herstellen von Verbindungen verwendet und unterstützen diese primären Anwendungsfälle:External data sources are used to establish connectivity and support these primary use cases:

  • Datenvirtualisierung und Laden von Dateien mithilfe von PolyBaseData virtualization and data load using PolyBase
  • Massenladevorgänge mit BULK INSERT oder OPENROWSETBulk load operations using BULK INSERT or OPENROWSET

Gilt für : Seit SQL Server 2016 (13.x)SQL Server 2016 (13.x)Applies to : Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x)

SyntaxSyntax

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CONNECTION_OPTIONS = '<name_value_pairs>']
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] PUSHDOWN = { ON | OFF } ]
    [ [ , ] TYPE = { HADOOP | BLOB_STORAGE } ]
    [ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]

ArgumenteArguments

data_source_namedata_source_name

Gibt den benutzerdefinierten Namen für die Datenquelle an.Specifies the user-defined name for the data source. Der Name muss innerhalb der Datenbank in SQL ServerSQL Server eindeutig sein.The name must be unique within the database in SQL ServerSQL Server.

LOCATION = '<prefix>://<path[:port]>'LOCATION = '<prefix>://<path[:port]>'

Stellt das Konnektivitätsprotokoll und den Pfad zur externe Datenquelle bereit.Provides the connectivity protocol and path to the external data source.

Externe DatenquelleExternal Data Source Speicherort-PräfixLocation prefix Location path (Pfad zum Speicherort)Location path Unterstützte Standorte nach Produkt/DienstSupported locations by product / service
Cloudera oder HortonworksCloudera or Hortonworks hdfs <Namenode>[:port] Seit SQL Server 2016 (13.x)SQL Server 2016 (13.x)Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x)
Azure Storage-Konto (V2)Azure Storage account(V2) wasb[s] <container>@<storage_account>.blob.core.windows.net Ab SQL Server 2016 (13.x)SQL Server 2016 (13.x) werden hierarchische Namespaces nicht unterstützt.Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) Hierarchical Namespace not supported
SQL ServerSQL Server sqlserver <server_name>[\<instance_name>][:port] Seit SQL Server 2019 (15.x)SQL Server 2019 (15.x)Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x)
OracleOracle oracle <server_name>[:port] Seit SQL Server 2019 (15.x)SQL Server 2019 (15.x)Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x)
TeradataTeradata teradata <server_name>[:port] Seit SQL Server 2019 (15.x)SQL Server 2019 (15.x)Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x)
MongoDB oder CosmosDBMongoDB or CosmosDB mongodb <server_name>[:port] Seit SQL Server 2019 (15.x)SQL Server 2019 (15.x)Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x)
ODBCODBC odbc <server_name>[:port] Ab SQL Server 2019 (15.x)SQL Server 2019 (15.x) (nur unter Windows)Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x) - Windows only
MassenvorgängeBulk Operations https <storage_account>.blob.core.windows.net/<container> Seit SQL Server 2017 (14.x)SQL Server 2017 (14.x)Starting with SQL Server 2017 (14.x)SQL Server 2017 (14.x)
Edge HubEdge Hub edgehub Nicht zutreffendNot Applicable EdgeHub befindet sich immer lokal bei der Azure SQL Edge-Instanz.EdgeHub is always local to the instance of Azure SQL Edge. Daher ist es nicht erforderlich, einen Pfad- oder Portwert anzugeben.As such there is no need to specify a path or port value. Nur in Azure SQL Edge verfügbar.Only available in Azure SQL Edge.
KafkaKafka kafka <Kafka IP Address>[:port] Nur in Azure SQL Edge verfügbar.Only available in Azure SQL Edge.

Speicherortpfad:Location path:

  • <Namenode> = Der Name des Computers, der Namensdienst-URI oder die IP-Adresse von Namenode im Hadoop-Cluster.<Namenode> = the machine name, name service URI, or IP address of the Namenode in the Hadoop cluster. PolyBase muss DNS-Namen auflösen, die vom Hadoop-Cluster verwendet werden.PolyBase must resolve any DNS names used by the Hadoop cluster.
  • port = Der Port, an dem die externe Datenquelle lauscht.port = The port that the external data source is listening on. In Hadoop verwendet der Port den Konfigurationsparameter fs.defaultFS.In Hadoop, the port can be found using the fs.defaultFS configuration parameter. Der Standardwert ist 8020.The default is 8020.
  • <container> = Der Container des Speicherkontos, der die Daten speichert.<container> = the container of the storage account holding the data. Stammcontainer sind schreibgeschützt und Daten können nicht zurück in den Container geschrieben werden.Root containers are read-only, data can't be written back to the container.
  • <storage_account> = Name des Speicherkontos der Azure-Ressource<storage_account> = the storage account name of the Azure resource.
  • <server_name> = Hostname.<server_name> = the host name.
  • <instance_name> = Der Name der von SQL Server benannten Instanz.<instance_name> = the name of the SQL Server named instance. Wird verwendet, wenn Sie den SQL Server-Browserdienst auf der Zielinstanz ausführen.Used if you have SQL Server Browser Service running on the target instance.

Zusätzliche Hinweise und Anweisungen für das Festlegen des Speicherorts:Additional notes and guidance when setting the location:

  • SQL Server-Datenbank-EngineSQL Server Database Engine überprüft die Existenz der externen Datenquelle nicht, wenn das Objekt erstellt wird.The SQL Server-Datenbank-EngineSQL Server Database Engine doesn't verify the existence of the external data source when the object is created. Erstellen Sie zum Überprüfen mithilfe der externe Datenquelle eine externe Tabelle.To validate, create an external table using the external data source.
  • Verwenden Sie beim Abfragen von Hadoop für alle Tabellen die gleiche externe Datenquelle, um eine konsistente Abfragesemantik zu ermöglichen.Use the same external data source for all tables when querying Hadoop to ensure consistent querying semantics.
  • Sie können das Speicherort-Präfix sqlserver verwenden, um eine Verbindung zwischen einer SQL Server 2019 (15.x)SQL Server 2019 (15.x)-Instanz und einer anderen SQL ServerSQL Server-Instanz, einer Azure SQL-DatenbankAzure SQL Database-Instanz oder mit Azure Synapse Analytics herzustellen.You can use the sqlserver location prefix to connect SQL Server 2019 (15.x)SQL Server 2019 (15.x) to another SQL ServerSQL Server, to Azure SQL-DatenbankAzure SQL Database, or to Azure Synapse Analytics.
  • Geben Sie Driver={<Name of Driver>} an, wenn Sie sich über ODBC verbinden.Specify the Driver={<Name of Driver>} when connecting via ODBC.
  • wasbs ist optional, wird jedoch für den Zugriff auf Azure Storage-Konten empfohlen, da Daten mithilfe einer sicheren TLS/SSL-Verbindung gesendet werden.wasbs is optional but recommended for accessing Azure Storage Accounts as data will be sent using a secure TLS/SSL connection.
  • abfs- oder abfss-APIs werden beim Zugriff auf Azure Storage-Konten nicht unterstützt.abfs or abfss APIs are not supported when accessing Azure Storage Accounts.
  • Die Option „Hierarchischer Namespace“ für Azure Storage-Konten (V2) wird nicht unterstützt.The Hierarchical Namespace option for Azure Storage Accounts(V2) is not supported. Stellen Sie sicher, dass diese Option weiterhin deaktiviert ist.Please ensure that this option remains disabled.
  • Für erfolgreiche PolyBase-Abfragen während eines Hadoop-Namenode-Failovers sollten Sie in Betracht ziehen, eine virtuelle IP-Adresse für den Namenode des Hadoop-Clusters zu verwenden.To ensure successful PolyBase queries during a Hadoop Namenode fail-over, consider using a virtual IP address for the Namenode of the Hadoop cluster. Falls nicht, führen Sie den Befehl ALTER EXTERNAL DATA SOURCE aus, um auf den neuen Speicherort zu verweisen.If you don't, execute an ALTER EXTERNAL DATA SOURCE command to point to the new location.

CONNECTION_OPTIONS = key_value_pairCONNECTION_OPTIONS = key_value_pair

Gibt zusätzliche Optionen bei einer Verbindung über ODBC mit einer externen Datenquelle an.Specifies additional options when connecting over ODBC to an external data source.

Es ist mindestens der Name des Treibers erforderlich. Allerdings sind auch Optionen wie APP='<your_application_name>' oder ApplicationIntent= ReadOnly|ReadWrite bei der Problembehandlung nützlich.The name of the driver is required as a minimum, but there are other options such as APP='<your_application_name>' or ApplicationIntent= ReadOnly|ReadWrite that are also useful to set and can assist with troubleshooting.

Weitere Informationen erhalten Sie in der ODBC-Produktdokumentation für eine Liste zulässiger CONNECTION_OPTIONS.Refer to the ODBC product documentation for a list of permitted CONNECTION_OPTIONS

PUSHDOWN = ON | OFFPUSHDOWN = ON | OFF

Gibt an, ob die Berechnung an die externe Datenquelle weitergegeben werden kann.States whether computation can be pushed down to the external data source. Diese Option ist standardmäßig aktiviert.It is on by default.

PUSHDOWN wird unterstützt, wenn eine Verbindung zu SQL Server, Oracle, Teradata, MongoDB oder ODBC auf der Ebene der externen Datenquelle hergestellt wird.PUSHDOWN is supported when connecting to SQL Server, Oracle, Teradata, MongoDB, or ODBC at the external data source level.

Das Aktivieren oder Deaktivieren der Weitergabe auf Abfrageebene erfolgt über einen Hinweis.Enabling or disabling push-down at the query level is achieved through a hint.

CREDENTIAL = credential_nameCREDENTIAL = credential_name

Gibt die datenbankbezogenen Anmeldeinformationen für die Authentifizierung mit der externen Datenquelle an.Specifies a database-scoped credential for authenticating to the external data source.

Zusätzliche Hinweise und Anweisungen für das Erstellen der Anmeldeinformationen:Additional notes and guidance when creating a credential:

  • CREDENTIAL ist nur erforderlich, wenn die Daten gesichert wurden.CREDENTIAL is only required if the data has been secured. CREDENTIAL ist für Datasets, die den anonymen Zugriff zulassen, nicht erforderlich.CREDENTIAL isn't required for data sets that allow anonymous access.
  • Wenn TYPE = BLOB_STORAGE, müssen die Anmeldeinformationen mithilfe einer SHARED ACCESS SIGNATURE als Identität erstellt werden.When TYPE = BLOB_STORAGE the credential must be created using SHARED ACCESS SIGNATURE as the identity. Darüber hinaus sollte das SAS-Token wie folgt konfiguriert werden:Furthermore, the SAS token should be configured as follows:
    • Schließen Sie bei der Konfiguration als Geheimnis das führende ? aus.Exclude the leading ? when configured as the secret
    • Für die zu ladende Datei (z. B. srt=o&sp=r) benötigen Sie mindestens eine Leseberechtigung.Have at least read permission on the file that should be loaded (for example srt=o&sp=r)
    • Verwenden Sie einen gültigen Ablaufzeitraum (alle Daten in UTC-Zeit).Use a valid expiration period (all dates are in UTC time).

Ein Beispiel für die Verwendung von CREDENTIAL mit SHARED ACCESS SIGNATURE und TYPE = BLOB_STORAGE finden Sie unter Erstellen einer externen Datenquelle für Massenvorgänge, die Daten aus Azure Storage abrufen.For an example of using a CREDENTIAL with SHARED ACCESS SIGNATURE and TYPE = BLOB_STORAGE, see Create an external data source to execute bulk operations and retrieve data from Azure Storage into SQL Database

Weitere Informationen zum Erstellen datenbankweit gültiger Anmeldeinformationen finden Sie unter CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).To create a database scoped credential, see CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

TYP = [HADOOP | BLOB_STORAGE]TYPE = [ HADOOP | BLOB_STORAGE ]

Gibt den Typ der externe Datenquelle an, die konfiguriert wird.Specifies the type of the external data source being configured. Dieser Parameter ist nicht immer erforderlich.This parameter isn't always required.

  • Verwenden Sie HADOOP, wenn die externe Datenquelle Cloudera, Hortonworks oder ein Azure Storage-Konto ist.Use HADOOP when the external data source is Cloudera, Hortonworks, or an Azure Storage account.
  • Verwenden Sie BLOB_STORAGE, wenn Sie mithilfe von BULK INSERT oder OPENROWSET mit SQL Server 2017 (14.x)SQL Server 2017 (14.x) Massenvorgänge aus Azure Storage-Konten ausführen.Use BLOB_STORAGE when executing bulk operations from Azure Storage account using BULK INSERT, or OPENROWSET with SQL Server 2017 (14.x)SQL Server 2017 (14.x).

Wichtig

Legen Sie TYPE nicht fest, wenn Sie eine andere externe Datenquelle verwenden.Do not set TYPE if using any other external data source.

Ein Beispiel für die Verwendung von TYPE = HADOOP zum Laden von Daten aus einem Azure Storage-Konto finden Sie unter Erstellen einer externen Datenquelle für den Zugriff auf Daten in Azure Storage mithilfe der Schnittstelle „wasb://“.For an example of using TYPE = HADOOP to load data from an Azure Storage account, see Create external data source to access data in Azure Storage using the wasb:// interface

RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:port]'RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:port]'

Konfigurieren Sie diesen optionalen Wert beim Herstellen einer Verbindung mit Hortonworks oder Cloudera.Configure this optional value when connecting to Hortonworks or Cloudera.

Wenn RESOURCE_MANAGER_LOCATION definiert ist, trifft der Abfrageoptimierer zur Verbesserung der Leistung eine kostenorientierte Entscheidung.When the RESOURCE_MANAGER_LOCATION is defined, the Query Optimizer will make a cost-based decision to improve performance. Ein MapReduce-Auftrag kann zum Übertragen der Berechnung an Hadoop verwendet werden.A MapReduce job can be used to push down the computation to Hadoop. Das Angeben von RESOURCE_MANAGER_LOCATION kann das Volume der zwischen Hadoop und SQL ServerSQL Server transferierten Daten erheblich reduzieren, was wiederum zu einer verbesserten Abfrageleistung führen kann.Specifying the RESOURCE_MANAGER_LOCATION can significantly reduce the volume of data transferred between Hadoop and SQL ServerSQL Server, which can lead to improved query performance.

Wenn der Ressourcen-Manager nicht angegeben ist, wird die Weitergabe der Berechnung an Hadoop für PolyBase-Abfragen deaktiviert.If the Resource Manager isn't specified, pushing compute to Hadoop is disabled for PolyBase queries.

Wenn kein Port angegeben ist, wird der Standardwert mithilfe der aktuellen Einstellung für die Konfiguration von „Hadoop Connectivity“ ausgewählt.If the port isn't specified, the default value is chosen using the current setting for 'hadoop connectivity' configuration.

Hadoop ConnectivityHadoop Connectivity Standardport des Ressourcen-ManagersDefault Resource Manager Port
11 5030050300
22 5030050300
33 80218021
44 80328032
55 80508050
66 80328032
77 80508050

Eine vollständige Liste der unterstützten Hadoop-Versionen finden Sie unter PolyBase Connectivity Configuration (Transact-SQL) (Konfiguration der PolyBase-Netzwerkkonnektivität (Transact-SQL)).For a complete list of supported Hadoop versions, see PolyBase Connectivity Configuration (Transact-SQL).

Wichtig

Der RESOURCE_MANAGER_LOCATION-Wert wird nicht überprüft, wenn Sie die externe Datenquelle erstellen.The RESOURCE_MANAGER_LOCATION value is not validated when you create the external data source. Das Eingeben eines falschen Werts verursacht zum Zeitpunkt der Ausführung einer Weitergabe gegebenenfalls einen Abfragefehler, da sich der bereitgestellte Wert nicht auflösen kann.Entering an incorrect value may cause query failure at execution time whenever push-down is attempted as the provided value would not be able to resolve.

Erstellen einer externen Datenquelle zum Verweisen auf Hadoop mit aktivierter Weitergabe stellt ein konkretes Beispiel und weitere Anleitungen bereit.Create external data source to reference Hadoop with push-down enabled provides a concrete example and further guidance.

BerechtigungenPermissions

Die CONTROL-Berechtigung für die Datenbank in SQL ServerSQL Server ist erforderlich.Requires CONTROL permission on database in SQL ServerSQL Server.

SperrenLocking

Eine gemeinsame Sperre für das EXTERNAL DATA SOURCE-Objekt wird zugelassen.Takes a shared lock on the EXTERNAL DATA SOURCE object.

SicherheitSecurity

PolyBase unterstützt die proxybasierte Authentifizierung für die meisten externen Datenquellen.PolyBase supports proxy based authentication for most external data sources. Erstellen Sie datenbankweit gültige Anmeldeinformationen, um das Proxykonto zu erstellen.Create a database scoped credential to create the proxy account.

Wenn Sie eine Verbindung mit dem Speicher oder Datenpool in einem Big Data-Cluster in SQL Server herstellen, werden die Anmeldeinformationen des Benutzers an das Back-End-System übergeben.When you connect to the storage or data pool in a SQL Server big data cluster, the user's credentials are passed through to the back-end system. Erstellen Sie Anmeldenamen im Datenpool selbst, um die Pass-Through-Authentifizierung zu aktivieren.Create logins in the data pool itself to enable pass through authentication.

Derzeit wird ein SAS-Token des Typs HADOOP nicht unterstützt.Currently a SAS token with type HADOOP is unsupported. Dieses Token wird nur mit einem Speicherkonto-Zugriffsschlüssel unterstützt.It's only supported with a storage account access key. Beim Erstellen einer externen Datenquelle mit dem Typ HADOOP und SAS-Anmeldeinformationen tritt folgender Fehler auf:Attempting to create an external data source with type HADOOP and a SAS credential fails with the following error:

Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'

Beispiele (ab SQL Server 2016 (13.x)SQL Server 2016 (13.x))Examples (Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x))

Wichtig

Informationen zum Installieren und Aktivieren von PolyBase finden Sie unter Installieren von PolyBase unter Windows.For information on how to install and enable PolyBase, see Install PolyBase on Windows

A.A. Erstellen einer externe Datenquelle in SQL Server 2019 für den Verweis auf OracleCreate external data source in SQL Server 2019 to reference Oracle

Stellen Sie sicher, dass Sie über datenbankweit gültige Anmeldeinformationen verfügen, um eine externe Datenquelle zu erstellen, die auf Oracle verweist.To create an external data source that references Oracle, ensure you have a database scoped credential. Optional können Sie auch die Weitergabe der Berechnung dieser Datenquelle aktivieren oder deaktivieren.You may optionally also enable or disable push-down of computation against this data source.

-- Create a database master key if one does not already exist, using your own password. This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '!MyC0mpl3xP@ssw0rd!' ;

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH
     IDENTITY = 'oracle_username',
     SECRET = 'oracle_password' ;

CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH
  ( LOCATION = 'oracle://145.145.145.145:1521',
    CREDENTIAL = OracleProxyAccount,
    PUSHDOWN = ON
  ) ;

Weitere Beispiele für andere Datenquellen wie MongoDB finden Sie unter Configure PolyBase to access external data in MongoDB (Konfigurieren von PolyBase für den Zugriff auf externe Daten in MongoDB).For additional examples to other data sources such as MongoDB, see Configure PolyBase to access external data in MongoDB

B.B. Erstellen einer externen Datenquelle, um auf Hadoop zu verweisenCreate external data source to reference Hadoop

Geben Sie den Computernamen oder die IP-Adresse von Hadoop-Namenode und des Ports an, um eine externe Datenquelle zu erstellen, die auf Ihre Hortonworks- oder Cloudera-Hadoop-Cluster verweist.To create an external data source to reference your Hortonworks or Cloudera Hadoop cluster, specify the machine name, or IP address of the Hadoop Namenode and port.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH
  ( LOCATION = 'hdfs://10.10.10.10:8050' ,
    TYPE = HADOOP
  ) ;

C.C. Erstellen einer externen Datenquelle, um mit der aktivierten Weitergabe auf Hadoop zu verweisenCreate external data source to reference Hadoop with push-down enabled

Geben Sie die Option RESOURCE_MANAGER_LOCATION an, um die Berechnung für PolyBase-Abfragen an Hadoop weiterzugeben.Specify the RESOURCE_MANAGER_LOCATION option to enable push-down computation to Hadoop for PolyBase queries. Nach der Aktivierung trifft PolyBase eine kostenorientierte Entscheidung, um zu bestimmen, ob die Abfrageberechnung an Hadoop weitergegeben werden soll.Once enabled, PolyBase makes a cost-based decision to determine whether the query computation should be pushed to Hadoop.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH
  ( LOCATION = 'hdfs://10.10.10.10:8020' ,
    TYPE = HADOOP ,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
  ) ;

D:D. Erstellen einer externen Datenquelle, um auf Kerberos-gesicherte Hadoop-Software zu verweisenCreate external data source to reference Kerberos-secured Hadoop

Um sicherzustellen, dass das Hadoop-Cluster mit Kerberos gesichert ist, können Sie den Wert der hadoop.security.authentication-Eigenschaft in „Hadoop-Core-site.xml“ überprüfen.To verify if the Hadoop cluster is Kerberos-secured, check the value of hadoop.security.authentication property in Hadoop core-site.xml. Um auf ein Kerberos-gesichertes Hadoop-Cluster zu verweisen, müssen Sie datenbankweit gültige Anmeldeinformationen angeben, die Ihren Kerberos-Benutzernamen und Ihr Kennwort enthalten.To reference a Kerberos-secured Hadoop cluster, you must specify a database scoped credential that contains your Kerberos username and password. Der Hauptschlüssel der Datenbank wird verwendet, um datenbankspezifische Anmeldeinformationen zu verschlüsseln.The database master key is used to encrypt the database scoped credential secret.

-- Create a database master key if one does not already exist, using your own password. This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo' ;

-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH
     IDENTITY = '<hadoop_user_name>',
     SECRET = '<hadoop_password>' ;

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH
  ( LOCATION = 'hdfs://10.10.10.10:8050' ,
    CREDENTIAL = HadoopUser1 ,
    TYPE = HADOOP ,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
  );

E.E. Erstellen einer externen Datenquelle für den Zugriff auf Daten in Azure Storage mithilfe der Schnittstelle „wasb://“Create external data source to access data in Azure Storage using the wasb:// interface

In diesem Beispiel ist die externe Datenquelle ein Azure Storage-Konto (V2) namens logs.In this example, the external data source is an Azure V2 Storage account named logs. Der Container heißt daily.The container is called daily. Die externe Azure Storage-Datenquelle dient nur der Datenübertragung.The Azure Storage external data source is for data transfer only. Die Prädikatweitergabe wird nicht unterstützt.It doesn't support predicate push-down. Hierarchische Namespaces werden nicht unterstützt, wenn der Datenzugriff über die Schnittstelle wasb:// erfolgt.Hierarchical namespaces are not supported when accessing data via the the wasb:// interface.

In diesem Beispiel wird gezeigt, wie Sie die datenbankweit gültigen Anmeldeinformationen für die Authentifizierung bei einem Azure Storage-Konto (V2) erstellen.This example shows how to create the database scoped credential for authentication to an Azure V2 Storage account. Geben Sie den Azure Storage-Kontoschlüssel im Anmeldeinformationsgeheimnis der Datenbank an.Specify the Azure Storage account key in the database credential secret. Sie können eine beliebige Zeichenfolge in der datenbankweit gültigen Identität der Anmeldeinformationen angeben, da sie nicht für die Authentifizierung bei Azure Storage verwendet wird.You can specify any string in database scoped credential identity as it isn't used during authentication to Azure Storage.

-- Create a database master key if one does not already exist, using your own password. This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo' ;

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH
  IDENTITY = '<my_account>' ,
  SECRET = '<azure_storage_account_key>' ;

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH
  ( LOCATION = 'wasbs://daily@logs.blob.core.windows.net/' ,
    CREDENTIAL = AzureStorageCredential ,
    TYPE = HADOOP
  ) ;

F.F. Erstellen einer externen Datenquelle für einen Verweis auf eine benannte SQL Server-Instanz über die PolyBase-Konnektivität (SQL Server 2019 (15.x)SQL Server 2019 (15.x))Create external data source to reference a SQL Server named instance via PolyBase connectivity (SQL Server 2019 (15.x)SQL Server 2019 (15.x))

Sie können eine externe Datenquelle erstellen, die auf eine benannte SQL ServerSQL Server-Instanz verweist, indem Sie den Instanznamen mit CONNECTION_OPTIONS angeben.To create an external data source that references a named instance of SQL ServerSQL Server, you can use CONNECTION_OPTIONS to specify the instance name. Im folgenden Beispiel ist WINSQL2019 der Hostname und SQL2019 der Instanzname.In below example, WINSQL2019 is the host name and SQL2019 is the instance name.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
  LOCATION = 'sqlserver://WINSQL2019' ,
  CONNECTION_OPTIONS = 'Server=%s\SQL2019' ,
  CREDENTIAL = SQLServerCredentials
) ;

Alternativ können Sie einen Port verwenden, um eine Verbindung mit einer SQL ServerSQL Server-Instanz herzustellen.Alternatively, you can use a port to connect to a SQL ServerSQL Server instance.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
  LOCATION = 'sqlserver://WINSQL2019:58137' ,
  CREDENTIAL = SQLServerCredentials
) ;

G.G. Erstellen einer externen Datenquelle für einen Verweis auf KafkaCreate external data source to reference Kafka

In diesem Beispiel ist die externe Datenquelle ein Kafka-Server mit der IP-Adresse xxx.xxx.xxx.xxx, der an Port 1900 lauscht.In this example, the external data source is a Kafak server with IP address xxx.xxx.xxx.xxx and listening on port 1900. Die externe Kafka-Datenquelle dient nur zum Streamen von Daten und unterstützt keinen Prädikatpushdown.The kafka external data source is only for data streaming and does not support predicate push down.

-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyKafkaServer WITH (
    LOCATION = 'kafka://xxx.xxx.xxx.xxx:1900'
)
go

H.H. Erstellen einer externen Datenquelle für einen Verweis auf EdgeHubCreate external data source to reference EdgeHub

In diesem Beispiel ist die externe Datenquelle eine EdgeHub-Instanz, die auf demselben Edgegerät wie Azure SQL Edge ausgeführt wird.In this example, the external data source is a EdgeHub running on the same edge device as Azure SQL Edge. Die externe EdgeHub-Datenquelle dient nur zum Streamen von Daten und unterstützt keinen Prädikatpushdown.The edgeHub external data source is only for data streaming and does not support predicate push down.

-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyEdgeHub WITH (
    LOCATION = 'edgehub://'
)
go

Beispiele: MassenvorgängeExamples: Bulk Operations

Wichtig

An das Ende der LOCATION-URL darf kein / , Dateiname oder Shared Access Signature-Parameter hinzugefügt werden, wenn Sie eine externe Datenquelle für Massenvorgänge konfigurieren.Do not add a trailing / , file name, or shared access signature parameters at the end of the LOCATION URL when configuring an external data source for bulk operations.

I.I. Erstellen einer externen Datenquelle für Massenvorgänge, die Daten aus Azure Storage abrufenCreate an external data source for bulk operations retrieving data from Azure Storage

Gilt für: SQL Server 2017 (14.x)SQL Server 2017 (14.x)Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x). Verwenden Sie die folgende Datenquelle für Massenvorgänge mit BULK INSERT oder OPENROWSET.Use the following data source for bulk operations using BULK INSERT or OPENROWSET. Die Anmeldeinformationen müssen SHARED ACCESS SIGNATURE als Identität festgelegt haben, dürfen kein führendes ? im SAS-Token aufweisen, müssen mindestens Leseberechtigung für die zu ladende Datei besitzen (z. B. srt=o&sp=r), und ihr Ablaufdatum muss gültig sein (alle Datumsangaben sind in UTC-Zeit).The credential must set SHARED ACCESS SIGNATURE as the identity, mustn't have the leading ? in the SAS token, must have at least read permission on the file that should be loaded (for example srt=o&sp=r), and the expiration period should be valid (all dates are in UTC time). Weitere Informationen zu SAS finden Sie unter Verwenden von Shared Access Signatures (SAS).For more information on shared access signatures, see Using Shared Access Signatures (SAS).

CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH
  IDENTITY = 'SHARED ACCESS SIGNATURE',
  -- Remove ? from the beginning of the SAS token
  SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=2016-12-29T16:55:34Z***************' ;

CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH
  ( LOCATION = 'https://newinvoices.blob.core.windows.net/week3' ,
    CREDENTIAL = AccessAzureInvoices ,
    TYPE = BLOB_STORAGE
  ) ;

Dies wird beim BULK INSERT-Beispiel praktisch veranschaulicht.To see this example in use, see the BULK INSERT example.

Weitere InformationenSee Also

* SQL-Datenbank *  * SQL Database *  

 

Übersicht: Azure SQL-DatenbankOverview: Azure SQL Database

Erstellt eine externe Datenquelle für elastische Abfragen.Creates an external data source for elastic queries. Externe Datenquellen werden zum Herstellen von Verbindungen verwendet und unterstützen diese primären Anwendungsfälle:External data sources are used to establish connectivity and support these primary use cases:

  • Massenladevorgänge mit BULK INSERT oder OPENROWSETBulk load operations using BULK INSERT or OPENROWSET
  • Abfragen von SQL-Datenbank- oder Azure Synapse-Remoteinstanzen mithilfe von SQL-Datenbank mit elastischen AbfragenQuery remote SQL Database or Azure Synapse instances using SQL Database with elastic query
  • Abfragen von Shard-Azure SQL-Datenbank mithilfe einer elastischen AbfrageQuery a sharded Azure SQL Database using elastic query

SyntaxSyntax

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] TYPE = { BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER } ]
    [ [ , ] DATABASE_NAME = '<database_name>' ]
    [ [ , ] SHARD_MAP_NAME = '<shard_map_manager>' ] )
[ ; ]

ArgumenteArguments

data_source_namedata_source_name

Gibt den benutzerdefinierten Namen für die Datenquelle an.Specifies the user-defined name for the data source. Dieser Name muss innerhalb der Datenbank in SQL-Datenbank eindeutig sein.The name must be unique within the database in SQL Database.

LOCATION = '<prefix>://<path[:port]>'LOCATION = '<prefix>://<path[:port]>'

Stellt das Konnektivitätsprotokoll und den Pfad zur externe Datenquelle bereit.Provides the connectivity protocol and path to the external data source.

Externe DatenquelleExternal Data Source Speicherort-PräfixLocation prefix Location path (Pfad zum Speicherort)Location path
MassenvorgängeBulk Operations https <storage_account>.blob.core.windows.net/<container>
Elastische Abfrage (Shard)Elastic Query (shard) Nicht erforderlichNot required <shard_map_server_name>.database.windows.net
Elastische Abfrage (Remote)Elastic Query (remote) Nicht erforderlichNot required <remote_server_name>.database.windows.net

Speicherortpfad:Location path:

  • <shard_map_server_name> = Der logische Servername in Azure, der den Shardzuordnungs-Manager hostet.<shard_map_server_name> = The logical server name in Azure that is hosting the shard map manager. Das DATABASE_NAME-Argument stellt die Datenbank zum Hosten der Shardzuordnung bereit, und SHARD_MAP_NAME wird für die Shardzuordnung selbst verwendet.The DATABASE_NAME argument provides the database used to host the shard map and SHARD_MAP_NAME is used for the shard map itself.
  • <remote_server_name> = Der Name des logischen Zielservers für die elastische Abfrage.<remote_server_name> = The target logical server name for the elastic query. Der Name der Datenbank wird mithilfe des DATABASE_NAME-Arguments angegeben.The database name is specified using the DATABASE_NAME argument.

Zusätzliche Hinweise und Anweisungen für das Festlegen des Speicherorts:Additional notes and guidance when setting the location:

  • Datenbank-EngineDatabase Engine überprüft die Existenz der externen Datenquelle nicht, wenn das Objekt erstellt wird.The Datenbank-EngineDatabase Engine doesn't verify the existence of the external data source when the object is created. Erstellen Sie zum Überprüfen mithilfe der externe Datenquelle eine externe Tabelle.To validate, create an external table using the external data source.

CREDENTIAL = credential_nameCREDENTIAL = credential_name

Gibt die datenbankbezogenen Anmeldeinformationen für die Authentifizierung mit der externen Datenquelle an.Specifies a database-scoped credential for authenticating to the external data source.

Zusätzliche Hinweise und Anweisungen für das Erstellen der Anmeldeinformationen:Additional notes and guidance when creating a credential:

  • Verwenden Sie zum Laden von Daten aus Azure Storage in Azure SQL-DatenbankAzure SQL Database eine Shared Access Signature (ein SAS-Token).To load data from Azure Storage into Azure SQL-DatenbankAzure SQL Database, use a Shared Access Signature (SAS token).
  • CREDENTIAL ist nur erforderlich, wenn die Daten gesichert wurden.CREDENTIAL is only required if the data has been secured. CREDENTIAL ist für Datasets, die den anonymen Zugriff zulassen, nicht erforderlich.CREDENTIAL isn't required for data sets that allow anonymous access.
  • Wenn TYPE = BLOB_STORAGE, müssen die Anmeldeinformationen mithilfe von SHARED ACCESS SIGNATURE als Identität erstellt werden.When the TYPE = BLOB_STORAGE the credential must be created using SHARED ACCESS SIGNATURE as the identity. Darüber hinaus sollte das SAS-Token wie folgt konfiguriert werden:Furthermore, the SAS token should be configured as follows:
    • Schließen Sie bei der Konfiguration als Geheimnis das führende ? aus.Exclude the leading ? when configured as the secret
    • Für die zu ladende Datei (z. B. srt=o&sp=r) benötigen Sie mindestens eine Leseberechtigung.Have at least read permission on the file that should be loaded (for example srt=o&sp=r)
    • Verwenden Sie einen gültigen Ablaufzeitraum (alle Daten in UTC-Zeit).Use a valid expiration period (all dates are in UTC time).

Ein Beispiel für die Verwendung von CREDENTIAL mit SHARED ACCESS SIGNATURE und TYPE = BLOB_STORAGE finden Sie unter Erstellen einer externen Datenquelle für Massenvorgänge, die Daten aus Azure Storage abrufen.For an example of using a CREDENTIAL with SHARED ACCESS SIGNATURE and TYPE = BLOB_STORAGE, see Create an external data source to execute bulk operations and retrieve data from Azure Storage into SQL Database

Weitere Informationen zum Erstellen datenbankweit gültiger Anmeldeinformationen finden Sie unter CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).To create a database scoped credential, see CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

TYPE = [ BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER]TYPE = [ BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER]

Gibt den Typ der externe Datenquelle an, die konfiguriert wird.Specifies the type of the external data source being configured. Dieser Parameter ist nicht immer erforderlich.This parameter isn't always required.

  • Verwenden Sie RDBMS für datenbankübergreifende Abfragen mit elastischen Abfragen in SQL-Datenbank.Use RDBMS for cross-database queries using elastic query from SQL Database.
  • Verwenden Sie beim Erstellen einer externen Datenquelle SHARD_MAP_MANAGER, wenn Sie eine Verbindung mit einer Shard-SQL-Datenbank herstellen.Use SHARD_MAP_MANAGER when creating an external data source when connecting to a sharded SQL Database.
  • Verwenden Sie BLOB_STORAGE beim Ausführen von Massenvorgängen mit BULK INSERT oder OPENROWSET.Use BLOB_STORAGE when executing bulk operations with BULK INSERT, or OPENROWSET.

Wichtig

Legen Sie TYPE nicht fest, wenn Sie eine andere externe Datenquelle verwenden.Do not set TYPE if using any other external data source.

DATABASE_NAME = database_nameDATABASE_NAME = database_name

Konfigurieren Sie dieses Argument, wenn der TYPE auf RDBMS oder SHARD_MAP_MANAGER festgelegt ist.Configure this argument when the TYPE is set to RDBMS or SHARD_MAP_MANAGER.

TYPETYPE Wert von DATABASE_NAMEValue of DATABASE_NAME
RDBMSRDBMS Der Name der Remotedatenbank auf dem mit LOCATION bereitgestellten Server.The name of the remote database on the server provided using LOCATION
SHARD_MAP_MANAGERSHARD_MAP_MANAGER Der Name der Datenbank, die als Shardzuordnungs-Manager fungiert.Name of the database operating as the shard map manager

Ein Beispiel zum Erstellen einer externe Datenquelle, bei der TYPE = RDBMS ist, finden Sie unter Erstellen einer externen RDBMS-Datenquelle.For an example showing how to create an external data source where TYPE = RDBMS refer to Create an RDBMS external data source

SHARD_MAP_NAME = shard_map_nameSHARD_MAP_NAME = shard_map_name

Wird verwendet, wenn das TYPE-Argument auf SHARD_MAP_MANAGER festgelegt wird, nur um den Namen der Shardzuordnung festzulegen.Used when the TYPE argument is set to SHARD_MAP_MANAGER only to set the name of the shard map.

Ein Beispiel zum Erstellen einer externe Datenquelle, bei der TYPE = SHARD_MAP_MANAGER ist, finden Sie unter Erstellen einer externen Datenquelle mithilfe des Shardzuordnungs-Managers.For an example showing how to create an external data source where TYPE = SHARD_MAP_MANAGER refer to Create a shard map manager external data source

BerechtigungenPermissions

Die CONTROL-Berechtigung für die Datenbank in Azure SQL-DatenbankAzure SQL Database ist erforderlich.Requires CONTROL permission on database in Azure SQL-DatenbankAzure SQL Database.

SperrenLocking

Eine gemeinsame Sperre für das EXTERNAL DATA SOURCE-Objekt wird zugelassen.Takes a shared lock on the EXTERNAL DATA SOURCE object.

Beispiele:Examples:

A.A. Erstellen einer externen Datenquelle für einen Shardzuordnungs-ManagerCreate a shard map manager external data source

Zur Erstellung einer externen Datenquelle, die auf SHARD_MAP_MANAGER verweist, wird der Name des SQL-Datenbankservers angegeben, der den Shardzuordnungs-Manager in SQL-Datenbank oder der SQL Server-Datenbank auf einer VM hostet.To create an external data source to reference a SHARD_MAP_MANAGER, specify the SQL Database server name that hosts the shard map manager in SQL Database or a SQL Server database on a virtual machine.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>' ;

CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
WITH
  IDENTITY = '<username>',
  SECRET = '<password>' ;

CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH
  ( TYPE = SHARD_MAP_MANAGER ,
    LOCATION = '<server_name>.database.windows.net' ,
    DATABASE_NAME = 'ElasticScaleStarterKit_ShardMapManagerDb' ,
    CREDENTIAL = ElasticDBQueryCred ,
    SHARD_MAP_NAME = 'CustomerIDShardMap'
  ) ;

Sie finden ein ausführliches Tutorial unter Getting started with elastic queries for sharding (horizontal partitioning) (Erste Schritte mit elastischen Abfragen für Sharding (horizontales Partitionieren)).For a step-by-step tutorial, see Getting started with elastic queries for sharding (horizontal partitioning).

B.B. Erstellen einer externen RDBMS-DatenquelleCreate an RDBMS external data source

Zur Erstellung einer externen Datenquelle, die auf RDBMS verweist, wird der Name des SQL-Datenbankservers der Remotedatenbank in SQL-Datenbank angegeben.To create an external data source to reference an RDBMS, specifies the SQL Database server name of the remote database in SQL Database.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>' ;

CREATE DATABASE SCOPED CREDENTIAL SQL_Credential
WITH
  IDENTITY = '<username>' ,
  SECRET = '<password>' ;

CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH
  ( TYPE = RDBMS ,
    LOCATION = '<server_name>.database.windows.net' ,
    DATABASE_NAME = 'Customers' ,
    CREDENTIAL = SQL_Credential
  ) ;

Sie finden ein ausführliches Tutorial für RDBMS unter Getting started with cross-database queries (vertical partitioning) (Erste Schritte mit datenbankübergreifenden Abfragen (vertikale Partitionierung)).For a step-by-step tutorial on RDBMS, see Getting started with cross-database queries (vertical partitioning).

Beispiele: MassenvorgängeExamples: Bulk Operations

Wichtig

An das Ende der LOCATION-URL darf kein / , Dateiname oder Shared Access Signature-Parameter hinzugefügt werden, wenn Sie eine externe Datenquelle für Massenvorgänge konfigurieren.Do not add a trailing / , file name, or shared access signature parameters at the end of the LOCATION URL when configuring an external data source for bulk operations.

C.C. Erstellen einer externen Datenquelle für Massenvorgänge, die Daten aus Azure Storage abrufenCreate an external data source for bulk operations retrieving data from Azure Storage

Verwenden Sie die folgende Datenquelle für Massenvorgänge mit BULK INSERT oder OPENROWSET.Use the following data source for bulk operations using BULK INSERT or OPENROWSET. Die Anmeldeinformationen müssen SHARED ACCESS SIGNATURE als Identität festgelegt haben, dürfen kein führendes ? im SAS-Token aufweisen, müssen mindestens Leseberechtigung für die zu ladende Datei besitzen (z. B. srt=o&sp=r), und ihr Ablaufdatum muss gültig sein (alle Datumsangaben sind in UTC-Zeit).The credential must set SHARED ACCESS SIGNATURE as the identity, mustn't have the leading ? in the SAS token, must have at least read permission on the file that should be loaded (for example srt=o&sp=r), and the expiration period should be valid (all dates are in UTC time). Weitere Informationen zu SAS finden Sie unter Verwenden von Shared Access Signatures (SAS).For more information on shared access signatures, see Using Shared Access Signatures (SAS).

CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH
  IDENTITY = 'SHARED ACCESS SIGNATURE',
  -- Remove ? from the beginning of the SAS token
  SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=2016-12-29T16:55:34Z***************' ;

CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH
  ( LOCATION = 'https://newinvoices.blob.core.windows.net/week3' ,
    CREDENTIAL = AccessAzureInvoices ,
    TYPE = BLOB_STORAGE
  ) ;

Sie finden dieses Beispiel unter BULK INSERT.To see this example in use, see BULK INSERT.

Weitere InformationenSee Also

* Azure Synapse
Analytics *
 
* Azure Synapse
Analytics *
 

 

Übersicht: Azure Synapse AnalyticsOverview: Azure Synapse Analytics

Erstellt eine externe Datenquelle für PolyBase.Creates an external data source for PolyBase. Externe Datenquellen werden zum Herstellen von Verbindungen verwendet und unterstützen die folgenden primären Anwendungsfälle: Datenvirtualisierung und Laden von Dateien mithilfe von PolyBaseExternal data sources are used to establish connectivity and support the following primary use case: Data virtualization and data load using PolyBase

Wichtig

Informationen zum Erstellen einer externen Datenquelle zum Abfragen von SQL-Analyse-Ressourcen mithilfe von Azure SQL-Datenbank mit einer elastischen Abfrage finden Sie unter SQL-Datenbank.To create an external data source to query a SQL Analytics resource using Azure SQL Database with elastic query, see SQL Database.

SyntaxSyntax

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] TYPE = HADOOP ]
[ ; ]

ArgumenteArguments

data_source_namedata_source_name

Gibt den benutzerdefinierten Namen für die Datenquelle an.Specifies the user-defined name for the data source. Der Name innerhalb von Azure SQL-DatenbankAzure SQL Database in Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse) muss eindeutig sein.The name must be unique within the Azure SQL-DatenbankAzure SQL Database in Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse).

LOCATION = '<prefix>://<path[:port]>'LOCATION = '<prefix>://<path[:port]>'

Stellt das Konnektivitätsprotokoll und den Pfad zur externe Datenquelle bereit.Provides the connectivity protocol and path to the external data source.

Externe DatenquelleExternal Data Source Speicherort-PräfixLocation prefix Location path (Pfad zum Speicherort)Location path
Azure Data Lake Storage Gen 1Azure Data Lake Store Gen 1 adl <storage_account>.azuredatalake.net
Azure Data Lake Storage Gen 2Azure Data Lake Store Gen 2 abfs[s] <container>@<storage_account>.dfs.core.windows.net
Azure Storage-Konto (V2)Azure V2 Storage account wasb[s] <container>@<storage_account>.blob.core.windows.net

Speicherortpfad:Location path:

  • <container> = Der Container des Speicherkontos, der die Daten speichert.<container> = the container of the storage account holding the data. Stammcontainer sind schreibgeschützt und Daten können nicht zurück in den Container geschrieben werden.Root containers are read-only, data can't be written back to the container.
  • <storage_account> = Name des Speicherkontos der Azure-Ressource<storage_account> = the storage account name of the Azure resource.

Zusätzliche Hinweise und Anweisungen für das Festlegen des Speicherorts:Additional notes and guidance when setting the location:

  • Bei der Bereitstellung von Azure Data Lake Storage Gen2 ist die Standardoption enable secure SSL connections.The default option is to use enable secure SSL connections when provisioning Azure Data Lake Storage Gen 2. Wenn diese Option aktiviert ist, müssen Sie abfss verwenden, wenn eine sichere TLS/SSL-Verbindung ausgewählt ist.When this is enabled, you must use abfss when a secure TLS/SSL connection is selected. Beachten Sie, dass abfss auch für unsichere TLS-Verbindungen funktioniert.Note abfssworks for unsecure TLS connections as well.
  • Azure Synapse überprüft die Existenz der externen Datenquelle nicht, wenn das Objekt erstellt wird.Azure Synapse doesn't verify the existence of the external data source when the object is created. .. Erstellen Sie zum Überprüfen mithilfe der externe Datenquelle eine externe Tabelle.To validate, create an external table using the external data source.
  • Verwenden Sie beim Abfragen von Hadoop für alle Tabellen die gleiche externe Datenquelle, um eine konsistente Abfragesemantik zu ermöglichen.Use the same external data source for all tables when querying Hadoop to ensure consistent querying semantics.
  • wasbs wird empfohlen, da Daten mithilfe einer sicheren TLS-Verbindung gesendet werden.wasbs is recommended as data will be sent using a secure TLS connection
  • Hierarchische Namespaces werden für Azure Storage-Konten (V2) nicht unterstützt, wenn der Datenzugriff über PolyBase mithilfe der Schnittstelle „wasb://“ erfolgt.Hierarchical Namespaces aren't supported with Azure V2 Storage Accounts when accessing data via PolyBase using the wasb:// interface.

CREDENTIAL = credential_nameCREDENTIAL = credential_name

Gibt die datenbankbezogenen Anmeldeinformationen für die Authentifizierung mit der externen Datenquelle an.Specifies a database-scoped credential for authenticating to the external data source.

Zusätzliche Hinweise und Anweisungen für das Erstellen der Anmeldeinformationen:Additional notes and guidance when creating a credential:

  • Verwenden Sie einen Azure Storage-Schlüssel, um Daten aus Azure Storage oder Azure Data Lake Storage Gen2 (ADLS) in SQL DW zu laden.To load data from Azure Storage or Azure Data Lake Store (ADLS) Gen 2 into SQL DW, use an Azure Storage Key.
  • CREDENTIAL ist nur erforderlich, wenn die Daten gesichert wurden.CREDENTIAL is only required if the data has been secured. CREDENTIAL ist für Datasets, die den anonymen Zugriff zulassen, nicht erforderlich.CREDENTIAL isn't required for data sets that allow anonymous access.

Weitere Informationen zum Erstellen datenbankweit gültiger Anmeldeinformationen finden Sie unter CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).To create a database scoped credential, see CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

TYPE = HADOOPTYPE = HADOOP

Gibt den Typ der externe Datenquelle an, die konfiguriert wird.Specifies the type of the external data source being configured. Dieser Parameter ist nicht immer erforderlich.This parameter isn't always required.

  • Verwenden Sie HADOOP, wenn die externe Datenquelle Azure Storage, ADLS Gen1 oder ADLS Gen2 ist.Use HADOOP when the external data source is Azure Storage, ADLS Gen 1, or ADLS Gen 2.

Ein Beispiel für die Verwendung von TYPE = HADOOP zum Laden von Daten aus Azure Storage finden Sie unter Erstellen einer externen Datenquelle für Verweise auf Azure Data Lake Storage Gen1 oder Gen2 mithilfe eines Dienstprinzipals.For an example of using TYPE = HADOOP to load data from Azure Storage, see Create external data source to reference Azure Data Lake Store Gen 1 or 2 using a service principal.

BerechtigungenPermissions

Erfordert die CONTROL-Berechtigung für die Datenbank.Requires CONTROL permission on the database.

SperrenLocking

Eine gemeinsame Sperre für das EXTERNAL DATA SOURCE-Objekt wird zugelassen.Takes a shared lock on the EXTERNAL DATA SOURCE object.

SicherheitSecurity

PolyBase unterstützt die proxybasierte Authentifizierung für die meisten externen Datenquellen.PolyBase supports proxy based authentication for most external data sources. Erstellen Sie datenbankweit gültige Anmeldeinformationen, um das Proxykonto zu erstellen.Create a database scoped credential to create the proxy account.

Wenn Sie eine Verbindung mit dem Speicher oder Datenpool in einem Big Data-Cluster in SQL Server herstellen, werden die Anmeldeinformationen des Benutzers an das Back-End-System übergeben.When you connect to the storage or data pool in a SQL Server big data cluster, the user's credentials are passed through to the back-end system. Erstellen Sie Anmeldenamen im Datenpool selbst, um die Pass-Through-Authentifizierung zu aktivieren.Create logins in the data pool itself to enable pass through authentication.

Derzeit wird ein SAS-Token des Typs HADOOP nicht unterstützt.Currently a SAS token with type HADOOP is unsupported. Dieses Token wird nur mit einem Speicherkonto-Zugriffsschlüssel unterstützt.It's only supported with a storage account access key. Beim Erstellen einer externen Datenquelle mit dem Typ HADOOP und SAS-Anmeldeinformationen tritt folgender Fehler auf:Attempting to create an external data source with type HADOOP and a SAS credential fails with the following error:

Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'

Beispiele:Examples:

A.A. Erstellen einer externen Datenquelle für den Zugriff auf Daten in Azure Storage mithilfe der Schnittstelle „wasb://“Create external data source to access data in Azure Storage using the wasb:// interface

In diesem Beispiel ist die externe Datenquelle ein Azure Storage-Konto (V2) namens logs.In this example, the external data source is an Azure V2 Storage account named logs. Der Container heißt daily.The container is called daily. Die externe Azure Storage-Datenquelle dient nur der Datenübertragung.The Azure Storage external data source is for data transfer only. Die Prädikatweitergabe wird nicht unterstützt.It doesn't support predicate push-down. Hierarchische Namespaces werden nicht unterstützt, wenn der Datenzugriff über die Schnittstelle wasb:// erfolgt.Hierarchical namespaces are not supported when accessing data via the the wasb:// interface.

In diesem Beispiel wird gezeigt, wie Sie die datenbankweit gültigen Anmeldeinformationen für die Authentifizierung bei Azure Storage erstellen.This example shows how to create the database scoped credential for authentication to Azure Storage. Geben Sie den Azure Storage-Kontoschlüssel im Anmeldeinformationsgeheimnis der Datenbank an.Specify the Azure Storage account key in the database credential secret. Sie können eine beliebige Zeichenfolge in der datenbankweit gültigen Identität der Anmeldeinformationen angeben, da sie nicht für die Authentifizierung bei Azure Storage verwendet wird.You can specify any string in database scoped credential identity as it isn't used during authentication to Azure storage.

-- Create a database master key if one does not already exist, using your own password. This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo' ;

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH
  IDENTITY = '<my_account>',
  SECRET = '<azure_storage_account_key>' ;

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH
  ( LOCATION = 'wasbs://daily@logs.blob.core.windows.net/' ,
    CREDENTIAL = AzureStorageCredential ,
    TYPE = HADOOP
  ) ;

B.B. Erstellen einer externen Datenquelle für Verweise auf Azure Data Lake Storage Gen1 oder Gen2 mithilfe eines DienstprinzipalsCreate external data source to reference Azure Data Lake Store Gen 1 or 2 using a service principal

Die Azure Data Lake Storage-Konnektivität kann auf Ihrem ADLS-URI und dem Dienstprinzipal Ihrer Azure Active Directory-Anwendung basieren.Azure Data Lake Store connectivity can be based on your ADLS URI and your Azure Active directory Application's service principal. Die Dokumentation zum Erstellen dieser Anwendung finden Sie unter Authentifizierung bei Data Lake Storage mit Active Directory.Documentation for creating this application can be found at Data lake store authentication using Active Directory.

-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>' ;

-- These values come from your Azure Active Directory Application used to authenticate to ADLS
CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
  -- IDENTITY = '<clientID>@<OAuth2.0TokenEndPoint>' ,
  IDENTITY = '536540b4-4239-45fe-b9a3-629f97591c0c@https://login.microsoftonline.com/42f988bf-85f1-41af-91ab-2d2cd011da47/oauth2/token' ,
  -- SECRET = '<KEY>'
  SECRET = 'BjdIlmtKp4Fpyh9hIvr8HJlUida/seM5kQ3EpLAmeDI=' 
;

-- For Gen 1 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen 1 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH
  ( LOCATION = 'adl://newyorktaxidataset.azuredatalakestore.net' ,
    CREDENTIAL = ADLS_credential ,
    TYPE = HADOOP
  ) ;

-- For Gen 2 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen 2 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH
  -- Please note the abfss endpoint when your account has secure transfer enabled
  ( LOCATION = 'abfss://data@newyorktaxidataset.dfs.core.windows.net' , 
    CREDENTIAL = ADLS_credential ,
    TYPE = HADOOP
  ) ;

C.C. Erstellen einer externen Datenquelle für Verweise auf Azure Data Lake Storage Gen2 mithilfe des SpeicherkontoschlüsselsCreate external data source to reference Azure Data Lake Store Gen 2 using the storage account key

-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>' ;

CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
-- IDENTITY = '<storage_account_name>' ,
  IDENTITY = 'newyorktaxidata' ,
-- SECRET = '<storage_account_key>'
  SECRET = 'yz5N4+bxSb89McdiysJAzo+9hgEHcJRJuXbF/uC3mhbezES/oe00vXnZEl14U0lN3vxrFKsphKov16C0w6aiTQ=='
;

-- Note this example uses a Gen 2 secured endpoint (abfss)
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( LOCATION = 'abfss://2013@newyorktaxidataset.dfs.core.windows.net' ,
    CREDENTIAL = ADLS_credential ,
    TYPE = HADOOP
  ) ;

D:D. Erstellen einer externen Datenquelle für einen Verweis auf PolyBase-Verbindungen mit Azure Data Lake Storage Gen2 mithilfe von „abfs://“Create external data source to reference Polybase connectivity to Azure Data Lake Store Gen 2 using abfs://

Wenn eine Verbindung mit einem Konto in Azure Data Lake Storage Gen 2 mithilfe einer verwalteten Identität hergestellt wird, muss SECRET nicht angegeben werden.There is no need to specify SECRET when connecting to Azure Data Lake Store Gen2 account with Managed Identity mechanism.

-- If you do not have a Master Key on your DW you will need to create one
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>' ;

--Create database scoped credential with **IDENTITY = 'Managed Service Identity'**

CREATE DATABASE SCOPED CREDENTIAL msi_cred 
WITH IDENTITY = 'Managed Service Identity' ;

--Create external data source with abfss:// scheme for connecting to your Azure Data Lake Store Gen2 account

CREATE EXTERNAL DATA SOURCE ext_datasource_with_abfss 
WITH 
  ( TYPE = HADOOP , 
    LOCATION = 'abfss://myfile@mystorageaccount.dfs.core.windows.net' , 
    CREDENTIAL = msi_cred
  ) ;

Weitere InformationenSee Also

* Analytics
Platform System (PDW) *
 
* Analytics
Platform System (PDW) *
 

 

Übersicht: AnalyseplattformsystemOverview: Analytics Platform System

Erstellt eine externe Datenquelle für PolyBase-Abfragen.Creates an external data source for PolyBase queries. Externe Datenquellen werden zum Herstellen von Verbindungen verwendet und unterstützen den folgenden Anwendungsfall: Datenvirtualisierung und Laden von Dateien mithilfe von PolyBaseExternal data sources are used to establish connectivity and support the following use case: Data virtualization and data load using PolyBase

SyntaxSyntax

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] TYPE = HADOOP ]
    [ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]

ArgumenteArguments

data_source_namedata_source_name

Gibt den benutzerdefinierten Namen für die Datenquelle an.Specifies the user-defined name for the data source. Der Name muss innerhalb des Servers in Parallel Data WarehouseParallel Data Warehouse eindeutig.The name must be unique within the server in Parallel Data WarehouseParallel Data Warehouse.

LOCATION = '<prefix>://<path[:port]>'LOCATION = '<prefix>://<path[:port]>'

Stellt das Konnektivitätsprotokoll und den Pfad zur externe Datenquelle bereit.Provides the connectivity protocol and path to the external data source.

Externe DatenquelleExternal Data Source Speicherort-PräfixLocation prefix Location path (Pfad zum Speicherort)Location path
Cloudera oder HortonworksCloudera or Hortonworks hdfs <Namenode>[:port]
Azure Storage-KontoAzure Storage Account wasb[s] <container>@<storage_account>.blob.core.windows.net

Speicherortpfad:Location path:

  • <Namenode>: Der Name des Computers, der Namensdienst-URI oder die IP-Adresse von Namenode im Hadoop-Cluster.<Namenode> = the machine name, name service URI, or IP address of the Namenode in the Hadoop cluster. PolyBase muss DNS-Namen auflösen, die vom Hadoop-Cluster verwendet werden.PolyBase must resolve any DNS names used by the Hadoop cluster.
  • port = Der Port, an dem die externe Datenquelle lauscht.port = The port that the external data source is listening on. In Hadoop verwendet der Port den Konfigurationsparameter fs.defaultFS.In Hadoop, the port can be found using the fs.defaultFS configuration parameter. Der Standardwert ist 8020.The default is 8020.
  • <container> = Der Container des Speicherkontos, der die Daten speichert.<container> = the container of the storage account holding the data. Stammcontainer sind schreibgeschützt und Daten können nicht zurück in den Container geschrieben werden.Root containers are read-only, data can't be written back to the container.
  • <storage_account> = Name des Speicherkontos der Azure-Ressource<storage_account> = the storage account name of the Azure resource.

Zusätzliche Hinweise und Anweisungen für das Festlegen des Speicherorts:Additional notes and guidance when setting the location:

  • Die PDW-Engine überprüft die Existenz der externen Datenquelle nicht, wenn das Objekt erstellt wird.The PDW engine doesn't verify the existence of the external data source when the object is created. Erstellen Sie zum Überprüfen mithilfe der externe Datenquelle eine externe Tabelle.To validate, create an external table using the external data source.
  • Verwenden Sie beim Abfragen von Hadoop für alle Tabellen die gleiche externe Datenquelle, um eine konsistente Abfragesemantik zu ermöglichen.Use the same external data source for all tables when querying Hadoop to ensure consistent querying semantics.
  • wasbs wird empfohlen, da Daten mithilfe einer sicheren TLS-Verbindung gesendet werden.wasbs is recommended as data will be sent using a secure TLS connection.
  • Hierarchische Namespaces können nicht zusammen mit Azure Storage-Konten in „wasb://“ verwendet werden.Hierarchical Namespaces are not supported when used with Azure Storage accounts over wasb://.
  • Für erfolgreiche PolyBase-Abfragen während eines Hadoop-Namenode-Failovers sollten Sie in Betracht ziehen, eine virtuelle IP-Adresse für den Namenode des Hadoop-Clusters zu verwenden.To ensure successful PolyBase queries during a Hadoop Namenode fail-over, consider using a virtual IP address for the Namenode of the Hadoop cluster. Falls nicht, führen Sie den Befehl ALTER EXTERNAL DATA SOURCE aus, um auf den neuen Speicherort zu verweisen.If you don't, execute an ALTER EXTERNAL DATA SOURCE command to point to the new location.

CREDENTIAL = credential_nameCREDENTIAL = credential_name

Gibt die datenbankbezogenen Anmeldeinformationen für die Authentifizierung mit der externen Datenquelle an.Specifies a database-scoped credential for authenticating to the external data source.

Zusätzliche Hinweise und Anweisungen für das Erstellen der Anmeldeinformationen:Additional notes and guidance when creating a credential:

  • Wenn Sie Daten aus Azure Storage in Azure Synapse oder PDW laden möchten, verwenden Sie einen Azure Storage-Schlüssel.To load data from Azure Storage into Azure Synapse or PDW, use an Azure Storage Key.
  • CREDENTIAL ist nur erforderlich, wenn die Daten gesichert wurden.CREDENTIAL is only required if the data has been secured. CREDENTIAL ist für Datasets, die den anonymen Zugriff zulassen, nicht erforderlich.CREDENTIAL isn't required for data sets that allow anonymous access.

TYPE = [ HADOOP ]TYPE = [ HADOOP ]

Gibt den Typ der externe Datenquelle an, die konfiguriert wird.Specifies the type of the external data source being configured. Dieser Parameter ist nicht immer erforderlich.This parameter isn't always required.

  • Verwenden Sie HADOOP, wenn die externe Datenquelle Cloudera, Hortonworks oder Azure Storage ist.Use HADOOP when the external data source is Cloudera, Hortonworks, or Azure Storage.

Ein Beispiel für die Verwendung von TYPE = HADOOP zum Laden von Daten aus Azure Storage finden Sie unter Erstellen einer externen Datenquelle, um auf Hadoop zu verweisen.For an example of using TYPE = HADOOP to load data from Azure Storage, see Create external data source to reference Hadoop.

RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:port]'RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:port]'

Konfigurieren Sie diesen optionalen Wert beim Herstellen einer Verbindung mit Hortonworks oder Cloudera.Configure this optional value when connecting to Hortonworks or Cloudera.

Wenn RESOURCE_MANAGER_LOCATION definiert ist, trifft der Abfrageoptimierer zur Verbesserung der Leistung eine kostenorientierte Entscheidung.When the RESOURCE_MANAGER_LOCATION is defined, the query optimizer will make a cost-based decision to improve performance. Ein MapReduce-Auftrag kann zum Übertragen der Berechnung an Hadoop verwendet werden.A MapReduce job can be used to push down the computation to Hadoop. Das Angeben von RESOURCE_MANAGER_LOCATION kann das Volume der zwischen Hadoop und SQL transferierten Daten erheblich reduzieren, was wiederum zu einer verbesserten Abfrageleistung führen kann.Specifying the RESOURCE_MANAGER_LOCATION can significantly reduce the volume of data transferred between Hadoop and SQL, which can lead to improved query performance.

Wenn der Ressourcen-Manager nicht angegeben ist, wird die Weitergabe der Berechnung an Hadoop für PolyBase-Abfragen deaktiviert.If the Resource Manager isn't specified, pushing compute to Hadoop is disabled for PolyBase queries.

Wenn kein Port angegeben ist, wird der Standardwert mithilfe der aktuellen Einstellung für die Konfiguration von „Hadoop Connectivity“ ausgewählt.If the port isn't specified, the default value is chosen using the current setting for 'hadoop connectivity' configuration.

Hadoop ConnectivityHadoop Connectivity Standardport des Ressourcen-ManagersDefault Resource Manager Port
11 5030050300
22 5030050300
33 80218021
44 80328032
55 80508050
66 80328032
77 80508050

Eine vollständige Liste der unterstützten Hadoop-Versionen finden Sie unter PolyBase Connectivity Configuration (Transact-SQL) (Konfiguration der PolyBase-Netzwerkkonnektivität (Transact-SQL)).For a complete list of supported Hadoop versions, see PolyBase Connectivity Configuration (Transact-SQL).

Wichtig

Der RESOURCE_MANAGER_LOCATION-Wert wird nicht überprüft, wenn Sie die externe Datenquelle erstellen.The RESOURCE_MANAGER_LOCATION value is not validated when you create the external data source. Das Eingeben eines falschen Werts verursacht zum Zeitpunkt der Ausführung einer Weitergabe gegebenenfalls einen Abfragefehler, da sich der bereitgestellte Wert nicht auflösen kann.Entering an incorrect value may cause query failure at execution time whenever push-down is attempted as the provided value would not be able to resolve.

Erstellen einer externen Datenquelle zum Verweisen auf Hadoop mit aktivierter Weitergabe stellt ein konkretes Beispiel und weitere Anleitungen bereit.Create external data source to reference Hadoop with push-down enabled provides a concrete example and further guidance.

BerechtigungenPermissions

Die CONTROL-Berechtigung für die Datenbank in Parallel Data WarehouseParallel Data Warehouse ist erforderlich.Requires CONTROL permission on database in Parallel Data WarehouseParallel Data Warehouse.

Hinweis

In vorherigen Releases von PDW waren ALTER ANY EXTERNAL DATA SOURCE-Berechtigungen beim Erstellen von externen Datenquellen erforderlich.In previous releases of PDW, create external data source required ALTER ANY EXTERNAL DATA SOURCE permissions.

SperrenLocking

Eine gemeinsame Sperre für das EXTERNAL DATA SOURCE-Objekt wird zugelassen.Takes a shared lock on the EXTERNAL DATA SOURCE object.

SicherheitSecurity

PolyBase unterstützt die proxybasierte Authentifizierung für die meisten externen Datenquellen.PolyBase supports proxy based authentication for most external data sources. Erstellen Sie datenbankweit gültige Anmeldeinformationen, um das Proxykonto zu erstellen.Create a database scoped credential to create the proxy account.

Derzeit wird ein SAS-Token des Typs HADOOP nicht unterstützt.Currently a SAS token with type HADOOP is unsupported. Dieses Token wird nur mit einem Speicherkonto-Zugriffsschlüssel unterstützt.It's only supported with a storage account access key. Beim Erstellen einer externen Datenquelle mit dem Typ HADOOP und SAS-Anmeldeinformationen tritt folgender Fehler auf:Attempting to create an external data source with type HADOOP and a SAS credential fails with the following error:

Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'

Beispiele:Examples:

A.A. Erstellen einer externen Datenquelle, um auf Hadoop zu verweisenCreate external data source to reference Hadoop

Geben Sie den Computernamen oder die IP-Adresse von Hadoop-Namenode und des Ports an, um eine externe Datenquelle zu erstellen, die auf Ihre Hortonworks- oder Cloudera-Hadoop-Cluster verweist.To create an external data source to reference your Hortonworks or Cloudera Hadoop cluster, specify the machine name, or IP address of the Hadoop Namenode and port.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH
  ( LOCATION = 'hdfs://10.10.10.10:8050' ,
    TYPE = HADOOP
  ) ;

B.B. Erstellen einer externen Datenquelle, um mit der aktivierten Weitergabe auf Hadoop zu verweisenCreate external data source to reference Hadoop with push-down enabled

Geben Sie die Option RESOURCE_MANAGER_LOCATION an, um die Berechnung für PolyBase-Abfragen an Hadoop weiterzugeben.Specify the RESOURCE_MANAGER_LOCATION option to enable push-down computation to Hadoop for PolyBase queries. Nach der Aktivierung trifft PolyBase eine kostenorientierte Entscheidung, um zu bestimmen, ob die Abfrageberechnung an Hadoop weitergegeben werden soll.Once enabled, PolyBase makes a cost-based decision to determine whether the query computation should be pushed to Hadoop.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH
  ( LOCATION = 'hdfs://10.10.10.10:8020'
    TYPE = HADOOP
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
) ;

C.C. Erstellen einer externen Datenquelle, um auf Kerberos-gesicherte Hadoop-Software zu verweisenCreate external data source to reference Kerberos-secured Hadoop

Um sicherzustellen, dass das Hadoop-Cluster mit Kerberos gesichert ist, können Sie den Wert der hadoop.security.authentication-Eigenschaft in „Hadoop-Core-site.xml“ überprüfen.To verify if the Hadoop cluster is Kerberos-secured, check the value of hadoop.security.authentication property in Hadoop core-site.xml. Um auf ein Kerberos-gesichertes Hadoop-Cluster zu verweisen, müssen Sie datenbankweit gültige Anmeldeinformationen angeben, die Ihren Kerberos-Benutzernamen und Ihr Kennwort enthalten.To reference a Kerberos-secured Hadoop cluster, you must specify a database scoped credential that contains your Kerberos username and password. Der Hauptschlüssel der Datenbank wird verwendet, um datenbankspezifische Anmeldeinformationen zu verschlüsseln.The database master key is used to encrypt the database scoped credential secret.

-- Create a database master key if one does not already exist, using your own password. This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo' ;

-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH
  IDENTITY = '<hadoop_user_name>' ,
  SECRET = '<hadoop_password>' ;

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH
  ( LOCATION = 'hdfs://10.10.10.10:8050' ,
    CREDENTIAL = HadoopUser1 ,
    TYPE = HADOOP ,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
  ) ;

D:D. Erstellen einer externen Datenquelle für den Zugriff auf Daten in Azure Storage mithilfe der Schnittstelle „wasb://“Create external data source to access data in Azure Storage using the wasb:// interface

In diesem Beispiel ist die externe Datenquelle ein Azure Storage-Konto (V2) namens logs.In this example, the external data source is an Azure V2 Storage account named logs. Der Container heißt daily.The container is called daily. Die externe Azure Storage-Datenquelle dient nur der Datenübertragung.The Azure Storage external data source is for data transfer only. Die Prädikatweitergabe wird nicht unterstützt.It doesn't support predicate push-down. Hierarchische Namespaces werden nicht unterstützt, wenn der Datenzugriff über die Schnittstelle wasb:// erfolgt.Hierarchical namespaces are not supported when accessing data via the the wasb:// interface.

Dieses Beispiel zeigt, wie Sie die datenbankweit gültigen Anmeldeinformationen für die Authentifizierung für Azure Storage erstellen.This example shows how to create the database scoped credential for authentication to Azure storage. Geben Sie den Azure-Speicherkontoschlüssel in den Anmeldeinformation für die Datenbank an.Specify the Azure storage account key in the database credential secret. Sie können eine beliebige Zeichenfolge in der datenbankweit gültigen Identität der Anmeldeinformationen angeben, da sie nicht für die Authentifizierung bei Azure Storage verwendet wird.You can specify any string in database scoped credential identity as it isn't used during authentication to Azure storage.

-- Create a database master key if one does not already exist, using your own password. This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo' ;

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH
  IDENTITY = '<my_account>' ,
  SECRET = '<azure_storage_account_key>' ;

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH
  ( LOCATION = 'wasbs://daily@logs.blob.core.windows.net/'
    CREDENTIAL = AzureStorageCredential
    TYPE = HADOOP
  ) ;

Weitere InformationenSee Also