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

Crée une source de données externe pour l’interrogation à l’aide de SQL Server, SQL Database, SQL Data Warehouse ou le système de la plateforme d’analyse (Parallel Data Warehouse ou PDW).Creates an external data source for querying using SQL Server, SQL Database, SQL Data Warehouse, or Analytics Platform System (Parallel Data Warehouse or PDW).

Cet article fournit la syntaxe, les arguments, les notes, les autorisations et des exemples associés au produit SQL que vous choisissez.This article provides the syntax, arguments, remarks, permissions, and examples for whichever SQL product you choose.

Pour plus d’informations sur les conventions de la syntaxe, consultez Conventions de la syntaxe Transact-SQL.For more information about the syntax conventions, see Transact-SQL Syntax Conventions.

Cliquez sur un produit !Click a product!

Dans la ligne suivante, cliquez sur le nom du produit qui vous intéresse.In the following row, click whichever product name you are interested in. Le clic affiche un contenu différent ici dans cette page web, approprié pour le produit sur lequel vous cliquez.The click displays different content here on this webpage, appropriate for whichever product you click.

* SQL Server *  * SQL Server *   SQL DatabaseSQL Database SQL Data
Warehouse
SQL Data
Warehouse
Analytics Platform
System (PDW)
Analytics Platform
System (PDW)

 

Présentation : SQL ServerOverview: SQL Server

Crée une source de données externe pour des requêtes PolyBase.Creates an external data source for PolyBase queries. Des sources de données externes sont utilisées pour établir la connectivité et prendre en charge ces principaux cas d’utilisation :External data sources are used to establish connectivity and support these primary use cases:

  • Virtualisation des données et chargement des données à l’aide de PolyBaseData virtualization and data load using PolyBase
  • Les opérations de chargement en bloc à l’aide de BULK INSERT ou OPENROWSETBulk load operations using BULK INSERT or OPENROWSET

S’APPLIQUE À : SQL Server 2016 (ou ultérieur)APPLIES TO: SQL Server 2016 (or higher)

SyntaxeSyntax

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>]'
)
[;]

ArgumentsArguments

data_source_namedata_source_name

Spécifie le nom défini par l’utilisateur de la source de données.Specifies the user-defined name for the data source. Ce nom doit être unique dans la base de données de SQL Server.The name must be unique within the database in SQL Server.

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

Fournit le protocole de connectivité et le chemin d’accès à la source de données externe.Provides the connectivity protocol and path to the external data source.

Source de données externeExternal Data Source Préfixe de l’emplacementLocation prefix Chemin d’emplacementLocation path Emplacements pris en charge par produit / serviceSupported locations by product / service
Cloudera ou HortonworksCloudera or Hortonworks hdfs <Namenode>[:port] SQL Server (2016+)SQL Server (2016+)
Stockage Blob AzureAzure Blob Storage wasb[s] <container>@<storage_account>.blob.core.windows.net SQL Server (2016+)SQL Server (2016+)
SQL ServerSQL Server sqlserver <server_name>[\<instance_name>][:port] SQL Server (2019+)SQL Server (2019+)
OracleOracle oracle <server_name>[:port] SQL Server (2019+)SQL Server (2019+)
TeradataTeradata teradata <server_name>[:port] SQL Server (2019+)SQL Server (2019+)
MongoDB ou CosmosDBMongoDB or CosmosDB mongodb <server_name>[:port] SQL Server (2019+)SQL Server (2019+)
ODBCODBC odbc <server_name>[:port] SQL Server (2019 +) - Windows uniquementSQL Server (2019+) - Windows only
opérations en blocBulk Operations https <storage_account>.blob.core.windows.net/<container> SQL Server (2017+)SQL Server (2017+)

Chemin d’emplacement :Location path:

  • <NameNode> = Nom de la machine, nom de l’URI de service ou adresse IP du Namenode du cluster Hadoop.<Namenode> = the machine name, name service URI, or IP address of the Namenode in the Hadoop cluster. PolyBase doit résoudre tous les noms DNS utilisés par le cluster Hadoop.PolyBase must resolve any DNS names used by the Hadoop cluster.
  • port = Le port d’écoute de la source de données externe.port = The port that the external data source is listening on. Dans Hadoop, le port se trouve à l’aide du paramètre de configuration fs.defaultFS.In Hadoop, the port can be found using the fs.defaultFS configuration parameter. La valeur par défaut est 8020.The default is 8020.
  • <container> = le conteneur du compte de stockage contenant les données.<container> = the container of the storage account holding the data. Les conteneurs racines sont en lecture seule, donc les données ne peuvent pas être réécrites sur le conteneur.Root containers are read-only, data can't be written back to the container.
  • <storage_account> = le nom du compte de stockage de la ressource Azure.<storage_account> = the storage account name of the azure resource.
  • <server_name> = le nom d’hôte.<server_name> = the host name.
  • <instance_name> = le nom de l’instance nommée de SQL Server.<instance_name> = the name of the SQL Server named instance. Utilisé si votre Service SQL Server Browser est en cours d’exécution sur l’instance cible.Used if you have SQL Server Browser Service running on the target instance.

Remarques et conseils supplémentaires lors de la définition de l’emplacement :Additional notes and guidance when setting the location:

  • Le moteur SQL ne vérifie pas l’existence de la source de données externe lorsque l’objet est créé.The SQL engine doesn't verify the existence of the external data source when the object is created. Pour valider, créez une table externe à l’aide d’une source de données externe.To validate, create an external table using the external data source.
  • Utilisez la même source de données externe pour toutes les tables lors de l’interrogation de Hadoop afin de garantir la cohérence des paramètres sémantiques de requête.Use the same external data source for all tables when querying Hadoop to ensure consistent querying semantics.
  • Vous pouvez utiliser le préfixe d’emplacement sqlserver pour connecter SQL Server 2019 à SQL Server, SQL Database ou SQL Data Warehouse.You can use the sqlserver location prefix to connect SQL Server 2019 to SQL Server, SQL Database, or SQL Data Warehouse.
  • Spécifiez Driver={<Name of Driver>} lors de la connexion via ODBC.Specify the Driver={<Name of Driver>} when connecting via ODBC.
  • wasb est le protocole par défaut pour le stockage d’objets blob Azure.wasb is the default protocol for Azure blob storage. wasbs est facultatif mais recommandé, car il permet d’envoyer les données au moyen d’une connexion SSL sécurisée.wasbs is optional but recommended as data will be sent using a secure SSL connection.
  • Pour garantir la réussite des requêtes PolyBase lors du basculement du Namenode Hadoop, envisagez d’utiliser une adresse IP virtuelle pour le Namenodedu cluster Hadoop.To ensure successful PolyBase queries during a Hadoop Namenode fail-over, consider using a virtual IP address for the Namenode of the Hadoop cluster. Dans le cas contraire, exécutez une commande ALTER EXTERNAL DATA SOURCE pour pointer vers le nouvel emplacement.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

Spécifie des options supplémentaires lors de la connexion via ODBC à une source de données externe.Specifies additional options when connecting over ODBC to an external data source.

Au minimum, le nom du pilote est requis, mais d’autres options telles que APP='<your_application_name>' ou ApplicationIntent= ReadOnly|ReadWrite sont également utiles pour paramétrer et aider à la résolution des problèmes.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 which are also useful to set and can assist with troubleshooting.

Reportez-vous à la documentation du produit ODBC pour obtenir la liste des options CONNECTION_OPTIONS autorisées.Refer to the ODBC product documentation for a list of permitted CONNECTION_OPTIONS

PUSHDOWN = ON | OFFPUSHDOWN = ON | OFF

Indique si le calcul peut être transmis à la source de données externe.States whether computation can be pushed down to the external data source. Cette option est activée par défaut.It is on by default.

PUSHDOWN est pris en charge lors de la connexion à SQL Server, Oracle, Teradata, MongoDB ou ODBC au niveau de la source de données externe.PUSHDOWN is supported when connecting to SQL Server, Oracle, Teradata, MongoDB, or ODBC at the external data source level.

L’activation ou la désactivation de la transmission au niveau de la requête s’effectue au moyen d’un indicateur.Enabling or disabling push-down at the query level is achieved through a hint.

CREDENTIAL = credential_nameCREDENTIAL = credential_name

Spécifie les informations d’identification limitées à la base de données servant à l’authentification auprès de la source de données externe.Specifies a database-scoped credential for authenticating to the external data source.

Remarques et conseils supplémentaires lors de la création d’informations d’identification :Additional notes and guidance when creating a credential:

  • CREDENTIAL est requis uniquement si le blob a été sécurisé.CREDENTIAL is only required if the blob has been secured. CREDENTIAL n’est pas requis pour les jeux de données qui autorisent l’accès anonyme.CREDENTIAL isn't required for data sets that allow anonymous access.
  • Lorsque TYPE = BLOB_STORAGE, les informations d’identification doivent être créées avec l’identité SHARED ACCESS SIGNATURE.When the TYPE = BLOB_STORAGE the credential must be created using SHARED ACCESS SIGNATURE as the identity. En outre, le jeton SAS doit être configuré comme suit :Furthermore, the SAS token should be configured as follows:
    • Retirez le caractère ? en tête lorsqu’il est configuré en tant que secretExclude the leading ? when configured as the secret
    • Disposez d’au moins l’autorisation en lecture sur le fichier qui doit être chargé (par exemple srt=o&sp=r)Have at least read permission on the file that should be loaded (for example srt=o&sp=r)
    • Utilisez une période d’expiration valide (toutes les dates sont au format UTC).Use a valid expiration period (all dates are in UTC time).

Pour un exemple d’utilisation de CREDENTIAL avec SHARED ACCESS SIGNATURE et TYPE = BLOB_STORAGE, consultez Créer une source de données externe pour les opérations en bloc de récupération de données dans le stockage Blob AzureFor 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 Blob Storage into SQL Database

Pour créer des informations d’identification délimitées à la base de données, consultez CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).To create a database scoped credential, see CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

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

Spécifie le type de source de données externe en cours de configuration.Specifies the type of the external data source being configured. Ce paramètre n’est pas toujours requis.This parameter isn't always required.

  • Utilisez HADOOP lorsque la source de données externe est Cloudera, Hortonworks ou Stockage Blob Azure.Use HADOOP when the external data source is Cloudera, Hortonworks, or Azure Blob Storage.
  • Utilisez BLOB_STORAGE quand vous exécutez des opérations en bloc à l’aide de BULK INSERT ou OPENROWSET avec SQL Server 2017 (14.x)SQL Server 2017 (14.x).Use BLOB_STORAGE when executing bulk operations with BULK INSERT, or OPENROWSET with SQL Server 2017 (14.x)SQL Server 2017 (14.x).

Important

Ne paramétrez pas TYPE si vous utilisez toute autre source de données externe.Do not set TYPE if using any other external data source.

Pour un exemple d’utilisation de TYPE = HADOOP pour charger des données depuis le stockage Blob Azure, consultez Créer une source de données externes pour référencer le stockage blob Azure.For an example of using TYPE = HADOOP to load data from Azure Blob Storage, see Create external data source to reference Azure blob storage.

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

Configurez cette valeur facultative lors de la connexion à Hortonworks ou Cloudera.Configure this optional value when connecting to Hortonworks or Cloudera.

Lorsque RESOURCE_MANAGER_LOCATION est défini, l’optimiseur de requête prend une décision basée sur le coût pour améliorer les performances.When the RESOURCE_MANAGER_LOCATION is defined, the query optimizer will make a cost-based decision to improve performance. Une tâche MapReduce peut être utilisée pour transmettre le calcul à Hadoop.A MapReduce job can be used to push down the computation to Hadoop. En spécifiant RESOURCE_MANAGER_LOCATION, il est possible de considérablement réduire le volume des données transférées entre Hadoop et SQL, ce qui peut donc améliorer les performances des requêtes.Specifying the RESOURCE_MANAGER_LOCATION can significantly reduce the volume of data transferred between Hadoop and SQL, which can lead to improved query performance.

Si le Gestionnaire des ressources n’est pas spécifié, le transfert de calcul dans Hadoop est désactivé pour les requêtes PolyBase.If the Resource Manager isn't specified, pushing compute to Hadoop is disabled for PolyBase queries.

Si le port n’est pas spécifié, la valeur par défaut est déterminée d’après le paramètre actuel de la configuration de la « connexion à hadoop ».If the port isn't specified, the default value is chosen using the current setting for 'hadoop connectivity' configuration.

Connexion HadoopHadoop Connectivity Port du Gestionnaire de ressources par défautDefault Resource Manager Port
11 5030050300
22 5030050300
33 80218021
44 80328032
55 80508050
66 80328032
77 80508050

Pour obtenir la liste complète des versions de Hadoop prises en charge, consultez Configuration de la connectivité PolyBase (Transact-SQL).For a complete list of supported Hadoop versions, see PolyBase Connectivity Configuration (Transact-SQL).

Important

La valeur RESOURCE_MANAGER_LOCATION n’est pas validée lorsque vous créez la source de données externe.The RESOURCE_MANAGER_LOCATION value is not validated when you create the external data source. La saisie d’une valeur incorrecte peut entraîner l’échec de la requête au moment de l’exécution chaque fois qu’une transmission est tentée, étant donné que la valeur fournie ne serait pas en mesure d’être résolue.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.

Créer une source de données externe pour faire référence à Hadoop avec la transmission activée fournit un exemple concret ainsi que des instructions complémentaires.Create external data source to reference Hadoop with push-down enabled provides a concrete example and further guidance.

AutorisationsPermissions

Nécessite l’autorisation CONTROL sur la base de données dans SQL Server.Requires CONTROL permission on database in SQL Server.

VerrouillageLocking

Prend un verrou partagé sur l’objet EXTERNAL DATA SOURCE.Takes a shared lock on the EXTERNAL DATA SOURCE object.

SécuritéSecurity

PolyBase prend en charge l’authentification basée sur le proxy pour la plupart de ces sources de données externes.PolyBase supports proxy based authentication for most external data sources. Créez des informations d’identification au niveau de la base de données pour créer le compte proxy.Create a database scoped credential to create the proxy account.

Lorsque vous vous connectez au stockage ou au pool de données dans un cluster Big data de SQL Server, les informations d’identification de l’utilisateur sont transmises par le système back-end.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. Créez des connexions dans le pool de données lui-même pour activer l’authentification en transfert direct.Create logins in the data pool itself to enable pass through authentication.

Actuellement un jeton SAP avec le type HADOOP n’est pas pris en charge.Currently a SAS token with type HADOOP is unsupported. Il est uniquement pris en charge avec une clé d’accès de compte de stockage.It's only supported with a storage account access key. Toute tentative de créer une source de données externe avec le type HADOOP et les informations d’identification SAS échoue avec l’erreur :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.'

Exemples : SQL Server (2016+)Examples: SQL Server (2016+)

A.A. Créer une source de données externe dans SQL 2019 pour faire référence à OracleCreate external data source in SQL 2019 to reference Oracle

Pour créer une source de données externe qui fait référence à Oracle, assurez-vous d’avoir des informations d’identification de niveau base de données.To create an external data source that references Oracle, ensure you have a database scoped credential. Vous pouvez également, si vous le souhaitez, activer ou désactiver la transmission des calculs par rapport à cette source de données.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
,    TYPE=BLOB_STORAGE
)
;

Pour obtenir des exemples supplémentaires pour d’autres sources de données telles que MongoDB, consultez Configurer PolyBase pour accéder aux données externes dans MongoDB.For additional examples to other data sources such as MongoDB, see Configure PolyBase to access external data in MongoDB

B.B. Créer une source de données externe pour faire référence à HadoopCreate external data source to reference Hadoop

Pour créer une source de données externe pour faire référence à votre cluster Hortonworks ou Cloudera Hadoop, spécifiez le nom de l’ordinateur ou l’adresse IP du port et du Namenode Hadoop.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. Créer une source de données externe pour faire référence à Hadoop avec transmission activéeCreate external data source to reference Hadoop with push-down enabled

Spécifiez l’option RESOURCE_MANAGER_LOCATION pour activer le calcul transmis à Hadoop pour des requêtes PolyBase.Specify the RESOURCE_MANAGER_LOCATION option to enable push-down computation to Hadoop for PolyBase queries. Une fois activé, PolyBase prend une décision basée sur les coûts pour déterminer si le calcul de la requête doit être poussé vers Hadoop.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. Créer une source de données externe pour faire référence à Hadoop sécurisé par KerberosCreate external data source to reference Kerberos-secured Hadoop

Pour vérifier si le cluster Hadoop est sécurisé par Kerberos, regardez la valeur de la propriété hadoop.security.authentication dans Hadoop core-site.xml.To verify if the Hadoop cluster is Kerberos-secured, check the value of hadoop.security.authentication property in Hadoop core-site.xml. Pour faire référence à un cluster Hadoop sécurisé par Kerberos, vous devez spécifier des informations d’identification limitées à la base de données qui contiennent votre nom d’utilisateur et votre mot de passe Kerberos.To reference a Kerberos-secured Hadoop cluster, you must specify a database scoped credential that contains your Kerberos username and password. La clé principale de la base de données est utilisée pour chiffrer le secret des informations d’identification limitées à la base de données.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. Créer une source de données externe pour faire référence au stockage d’objets blob AzureCreate external data source to reference Azure blob storage

Dans cet exemple, la source de données externe est un conteneur de stockage d’objets blob Azure appelé daily sous le compte de stockage Azure nommé logs.In this example, the external data source is an Azure blob storage container called daily under Azure storage account named logs. La source de données externe de stockage Azure sert au transfert des données uniquement.The Azure storage external data source is for data transfer only. Elle ne prend pas en charge le pushdown de prédicats.It doesn't support predicate push-down.

Cet exemple montre comment créer des informations d’identification limitées à la base de données qui serviront à l’authentification auprès du stockage Azure.This example shows how to create the database scoped credential for authentication to Azure storage. Spécifiez la clé du compte de stockage Azure dans le secret des informations d’identification de la base de données.Specify the Azure storage account key in the database credential secret. Vous pouvez spécifier toute chaîne de l’identité des informations d’identification limitées à la base de données, étant donné qu’elle n’est pas utilisée lors de l’authentification auprès du stockage Azure.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
)
;

Exemples : opérations en blocExamples: Bulk Operations

Notes

Ne placez pas de / en fin, nom de fichier, ou paramètres de signature d’accès partagé à la fin de l’URL LOCATION lors de la configuration d’une source de données externe pour les opérations en bloc.Do not put 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.

F.F. Créer une source de données externe pour les opérations en bloc de récupération de données dans le stockage Blob AzureCreate an external data source for bulk operations retrieving data from Azure Blob storage

S’applique à : SQL Server 2017 (14.x)SQL Server 2017 (14.x).Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x). Utilisez la source de données suivante pour les opérations en bloc à l’aide de BULK INSERT ou OPENROWSET.Use the following data source for bulk operations using BULK INSERT or OPENROWSET. L’identifiant utilisé doit donner à l’identité la valeur SHARED ACCESS SIGNATURE, ne doit pas avoir le premier ? dans le jeton SAS, doit avoir au moins les droits de lecture sur le fichier à charger (par exemple srt=o&sp=r), et doit présenter une période d’expiration valide (toutes les dates sont en heure UTC).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). Pour plus d’informations sur les signatures d’accès partagé, consultez Utilisation des signatures d’accès partagé (SAP).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
)
;

Pour voir une utilisation de cet exemple, consultez BULK INSERT.To see this example in use, see BULK INSERT.

Voir aussiSee Also

SQL ServerSQL Server * SQL Database *  * SQL Database *   SQL Data
Warehouse
SQL Data
Warehouse
Analytics Platform
System (PDW)
Analytics Platform
System (PDW)

 

Présentation : Azure SQL DatabaseOverview: Azure SQL Database

Crée une source de données externe pour des requêtes élastiques.Creates an external data source for elastic queries. Des sources de données externes sont utilisées pour établir la connectivité et prendre en charge ces principaux cas d’utilisation :External data sources are used to establish connectivity and support these primary use cases:

  • Les opérations de chargement en bloc à l’aide de BULK INSERT ou OPENROWSETBulk load operations using BULK INSERT or OPENROWSET
  • Interrogation d’instances distantes de SQL Database ou de SQL Data Warehouse à l’aide de SQL Database avec des requêtes élastiquesQuery remote SQL Database or SQL Data Warehouse instances using SQL Database with elastic query
  • Interrogation d’une base Azure SQL Database partitionnée à l’aide de requêtes élastiquesQuery a sharded Azure SQL Database using elastic query

SyntaxeSyntax

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>' ]
)
[;]

ArgumentsArguments

data_source_namedata_source_name

Spécifie le nom défini par l’utilisateur de la source de données.Specifies the user-defined name for the data source. Ce nom doit être unique dans la base de données de SQL Database (SQL DB).The name must be unique within the database in SQL Database (SQL DB).

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

Fournit le protocole de connectivité et le chemin d’accès à la source de données externe.Provides the connectivity protocol and path to the external data source.

Source de données externeExternal Data Source Préfixe de l’emplacementLocation prefix Chemin d’emplacementLocation path
opérations en blocBulk Operations https <storage_account>.blob.core.windows.net/<container>
Requête élastique (partition)Elastic Query (shard) FacultatifNot required <shard_map_server_name>.database.windows.net
Requête élastique (distant)Elastic Query (remote) FacultatifNot required <remote_server_name>.database.windows.net

Chemin d’emplacement :Location path:

  • <shard_map_server_name> = le nom du serveur logique dans Azure qui héberge le Gestionnaire de la carte de partitions.<shard_map_server_name> = The logical server name in Azure that is hosting the shard map manager. L’argument DATABASE_NAME fournit la base de données utilisée pour héberger la carte de partitions et l’argument SHARD_MAP_NAME est utilisé pour la carte de partitions proprement dite.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> = le nom du serveur logique cible pour la requête élastique.<remote_server_name> = The target logical server name for the elastic query. Le nom de la base de données est spécifié avec l’argument DATABASE_NAME.The database name is specified using the DATABASE_NAME argument.

Remarques et conseils supplémentaires lors de la définition de l’emplacement :Additional notes and guidance when setting the location:

  • Le moteur SQL Database ne vérifie pas l’existence de la source de données externe lorsque l’objet est créé.The SQL Database engine doesn't verify the existence of the external data source when the object is created. Pour valider, créez une table externe à l’aide d’une source de données externe.To validate, create an external table using the external data source.

CREDENTIAL = credential_nameCREDENTIAL = credential_name

Spécifie les informations d’identification limitées à la base de données servant à l’authentification auprès de la source de données externe.Specifies a database-scoped credential for authenticating to the external data source.

Remarques et conseils supplémentaires lors de la création d’informations d’identification :Additional notes and guidance when creating a credential:

  • Pour charger les données à partir du stockage Blob Azure dans SQL Database, utilisez une clé de stockage Azure.To load data from Azure Blob storage into SQL Database, use an Azure Storage Key.
  • CREDENTIAL est requis uniquement si le blob a été sécurisé.CREDENTIAL is only required if the blob has been secured. CREDENTIAL n’est pas requis pour les jeux de données qui autorisent l’accès anonyme.CREDENTIAL isn't required for data sets that allow anonymous access.
  • Lorsque TYPE = BLOB_STORAGE, les informations d’identification doivent être créées avec l’identité SHARED ACCESS SIGNATURE.When the TYPE = BLOB_STORAGE the credential must be created using SHARED ACCESS SIGNATURE as the identity. En outre, le jeton SAS doit être configuré comme suit :Furthermore, the SAS token should be configured as follows:
    • Retirez le caractère ? en tête lorsqu’il est configuré en tant que secretExclude the leading ? when configured as the secret
    • Disposez d’au moins l’autorisation en lecture sur le fichier qui doit être chargé (par exemple srt=o&sp=r)Have at least read permission on the file that should be loaded (for example srt=o&sp=r)
    • Utilisez une période d’expiration valide (toutes les dates sont au format UTC).Use a valid expiration period (all dates are in UTC time).

Pour un exemple d’utilisation de CREDENTIAL avec SHARED ACCESS SIGNATURE et TYPE = BLOB_STORAGE, consultez Créer une source de données externe pour les opérations en bloc de récupération de données dans le stockage Blob AzureFor 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 Blob Storage into SQL Database

Pour créer des informations d’identification délimitées à la base de données, consultez 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]

Spécifie le type de source de données externe en cours de configuration.Specifies the type of the external data source being configured. Ce paramètre n’est pas toujours requis.This parameter isn't always required.

  • Utilisez SGBDR pour les requêtes de bases de données croisées utilisant les requêtes élastiques à partir de SQL Database.Use RDBMS for cross-database queries using elastic query from SQL Database.
  • Utilisez SHARD_MAP_MANAGER lors de la création d’une source de données externe lorsque vous vous connectez à une base de données SQL partitionnée.Use SHARD_MAP_MANAGER when creating an external data source when connecting to a sharded SQL Database.
  • Utilisez BLOB_STORAGE quand vous exécutez des opérations en bloc à l’aide de BULK INSERT ou OPENROWSET.Use BLOB_STORAGE when executing bulk operations with BULK INSERT, or OPENROWSET.

Important

Ne paramétrez pas TYPE si vous utilisez toute autre source de données externe.Do not set TYPE if using any other external data source.

DATABASE_NAME = database_nameDATABASE_NAME = database_name

Configurez cet argument lorsque TYPE a la valeur RDBMS ou SHARD_MAP_MANAGER.Configure this argument when the TYPE is set to RDBMS or SHARD_MAP_MANAGER.

TYPETYPE Valeur de DATABASE_NAMEValue of DATABASE_NAME
SGBDRRDBMS Le nom de la base de données distante sur le serveur fourni à l’aide de LOCATIONThe name of the remote database on the server provided using LOCATION
SHARD_MAP_MANAGERSHARD_MAP_MANAGER Nom de la base de données faisant office de Gestionnaire de la carte de partitionsName of the database operating as the shard map manager

Pour un exemple montrant comment créer une source de données externe où TYPE=RDBMS, consultez Créer une source de données externe SGBDRFor 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

Utilisé lorsque l’argument TYPE a la valeur SHARD_MAP_MANAGER uniquement pour définir le nom de la carte de partitions.Used when the TYPE argument is set to SHARD_MAP_MANAGER only to set the name of the shard map.

Pour un exemple montrant comment créer une source de données externe où TYPE = SHARD_MAP_MANAGER, consultez Créer une source de données externe de Gestionnaire de la carte des partitionsFor 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

AutorisationsPermissions

Nécessite l’autorisation CONTROL sur la base de données dans SQL Database.Requires CONTROL permission on database in SQL Database.

VerrouillageLocking

Prend un verrou partagé sur l’objet EXTERNAL DATA SOURCE.Takes a shared lock on the EXTERNAL DATA SOURCE object.

Exemples :Examples:

A.A. Créer une source de données externe de Gestionnaire de cartes de partitionsCreate a shard map manager external data source

Pour créer une source de données externe pour faire référence à SHARD_MAP_MANAGER, spécifiez le nom du serveur SQL Database qui héberge le Gestionnaire de cartes de partitions dans SQL Database ou une base de données SQL Server sur une machine virtuelle.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'
)
;

Pour un tutoriel détaillé, consultez Bien démarrer avec les requêtes élastiques pour le partitionnement (partitionnement horizontal).For a step-by-step tutorial, see Getting started with elastic queries for sharding (horizontal partitioning).

B.B. Créer une source de données externe de SGBDRCreate an RDBMS external data source

Pour créer une source de données externe pour faire référence à un SGBDR, spécifie le nom du serveur SQL Database de la base de données distante dans SQL Database.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
)
;

Pour un tutoriel détaillé sur le SGBDR, consultez Prise en main des requêtes de bases de données croisées (partitionnement vertical).For a step-by-step tutorial on RDBMS, see Getting started with cross-database queries (vertical partitioning).

Exemples : opérations en blocExamples: Bulk Operations

Notes

Ne placez pas de / en fin, nom de fichier, ou paramètres de signature d’accès partagé à la fin de l’URL LOCATION lors de la configuration d’une source de données externe pour les opérations en bloc.Do not put 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. Créer une source de données externe pour les opérations en bloc de récupération de données dans le stockage Blob AzureCreate an external data source for bulk operations retrieving data from Azure Blob storage

Utilisez la source de données suivante pour les opérations en bloc à l’aide de BULK INSERT ou OPENROWSET.Use the following data source for bulk operations using BULK INSERT or OPENROWSET. L’identifiant utilisé doit donner à l’identité la valeur SHARED ACCESS SIGNATURE, ne doit pas avoir le premier ? dans le jeton SAS, doit avoir au moins les droits de lecture sur le fichier à charger (par exemple srt=o&sp=r), et doit présenter une période d’expiration valide (toutes les dates sont en heure UTC).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). Pour plus d’informations sur les signatures d’accès partagé, consultez Utilisation des signatures d’accès partagé (SAP).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
)
;

Pour voir une utilisation de cet exemple, consultez BULK INSERT.To see this example in use, see BULK INSERT.

Voir aussiSee Also

SQL ServerSQL Server SQL DatabaseSQL Database * SQL Data
Warehouse *
 
* SQL Data
Warehouse *
 
Analytics Platform
System (PDW)
Analytics Platform
System (PDW)

 

Présentation : Azure SQL Data Warehouse.Overview: Azure SQL Data Warehouse

Crée une source de données externe pour PolyBase.Creates an external data source for PolyBase. Des sources de données externes sont utilisées pour établir la connectivité et prendre en charge le cas d’utilisation principal suivant : Virtualisation des données et chargement des données à l’aide de PolyBaseExternal data sources are used to establish connectivity and support the following primary use case: Data virtualization and data load using PolyBase

Important

Pour créer une source de données externes afin d’interroger des instances SQL Database Warehouse à l’aide de SQL Database avec des requêtes élastiques, consultez SQL Database.To create an external data source to query a SQL Data Warehouse instances using SQL Database with elastic query, see SQL Database.

SyntaxeSyntax

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

ArgumentsArguments

data_source_namedata_source_name

Spécifie le nom défini par l’utilisateur de la source de données.Specifies the user-defined name for the data source. Ce nom doit être unique dans la base de données de SQL Data Warehouse (SQL DW).The name must be unique within the database in SQL Data Warehouse (SQL DW).

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

Fournit le protocole de connectivité et le chemin d’accès à la source de données externe.Provides the connectivity protocol and path to the external data source.

Source de données externeExternal Data Source Préfixe de l’emplacementLocation prefix Chemin d’emplacementLocation path
Stockage Blob AzureAzure Blob Storage wasb[s] <container>@<storage_account>.blob.core.windows.net
Azure Data Lake Store Gén. 1Azure Data Lake Store Gen 1 adl <storage_account>.azuredatalake.net
Azure Data Lake Store Gén. 2Azure Data Lake Store Gen 2 abfs[s] <container>@<storage_account>.dfs.core.windows.net

Chemin d’emplacement :Location path:

  • <container> = le conteneur du compte de stockage contenant les données.<container> = the container of the storage account holding the data. Les conteneurs racines sont en lecture seule, donc les données ne peuvent pas être réécrites sur le conteneur.Root containers are read-only, data can't be written back to the container.
  • <storage_account> = le nom du compte de stockage de la ressource Azure.<storage_account> = the storage account name of the azure resource.

Remarques et conseils supplémentaires lors de la définition de l’emplacement :Additional notes and guidance when setting the location:

  • L’option par défaut consiste à activer les connexions SSL sécurisées lors du provisionnement d’Azure Data Lake Storage Gen 2.The default option is to use enable secure SSL connections when provisioning Azure Data Lake Storage Gen 2. Si cette option est activée, vous devez utiliser abfss lorsqu’une connexion SSL sécurisée est sélectionnée.When this is enabled, you must use abfss when a secure SSL connection is selected. Notez que abfss fonctionne également pour les connexions SSL non sécurisées.Note abfssworks for unsecure SSL connections as well.
  • Le moteur SQL Data Warehouse ne vérifie pas l’existence de la source de données externe lorsque l’objet est créé.The SQL Data Warehouse engine doesn't verify the existence of the external data source when the object is created. Pour valider, créez une table externe à l’aide d’une source de données externe.To validate, create an external table using the external data source.
  • Utilisez la même source de données externe pour toutes les tables lors de l’interrogation de Hadoop afin de garantir la cohérence des paramètres sémantiques de requête.Use the same external data source for all tables when querying Hadoop to ensure consistent querying semantics.
  • wasb est le protocole par défaut pour le stockage d’objets blob Azure.wasb is the default protocol for Azure blob storage. wasbs est facultatif mais recommandé, car il permet d’envoyer les données au moyen d’une connexion SSL sécurisée.wasbs is optional but recommended as data will be sent using a secure SSL connection.

CREDENTIAL = credential_nameCREDENTIAL = credential_name

Spécifie les informations d’identification limitées à la base de données servant à l’authentification auprès de la source de données externe.Specifies a database-scoped credential for authenticating to the external data source.

Remarques et conseils supplémentaires lors de la création d’informations d’identification :Additional notes and guidance when creating a credential:

  • Pour charger des données en provenance du stockage Blob Azure ou d’Azure Data Lake Store (ADLS) Gén. 2 dans SQL DW, utilisez une clé de stockage Azure.To load data from Azure Blob Storage or Azure Data Lake Store (ADLS) Gen 2 into SQL DW, use an Azure Storage Key.
  • CREDENTIAL est requis uniquement si le blob a été sécurisé.CREDENTIAL is only required if the blob has been secured. CREDENTIAL n’est pas requis pour les jeux de données qui autorisent l’accès anonyme.CREDENTIAL isn't required for data sets that allow anonymous access.

Pour créer des informations d’identification délimitées à la base de données, consultez CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).To create a database scoped credential, see CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

TYPE = HADOOPTYPE = HADOOP

Spécifie le type de source de données externe en cours de configuration.Specifies the type of the external data source being configured. Ce paramètre n’est pas toujours requis.This parameter isn't always required.

  • Utilisez HADOOP lorsque la source de données externe est Clouderale Stockage Blob Azure, ADLS Gén. 1 ou ADLS Gén. 2.Use HADOOP when the external data source is Azure Blob Storage, ADLS Gen 1, or ADLS Gen 2.

Important

Ne paramétrez pas TYPE si vous utilisez toute autre source de données externe.Do not set TYPE if using any other external data source.

Pour un exemple d’utilisation de TYPE = HADOOP pour charger des données depuis le stockage Blob Azure, consultez Créer une source de données externes pour référencer le stockage blob Azure.For an example of using TYPE = HADOOP to load data from Azure Blob Storage, see Create external data source to reference Azure blob storage.

AutorisationsPermissions

Nécessite l’autorisation CONTROL sur la base de données dans SQL Data Warehouse.Requires CONTROL permission on database in SQL Data Warehouse.

VerrouillageLocking

Prend un verrou partagé sur l’objet EXTERNAL DATA SOURCE.Takes a shared lock on the EXTERNAL DATA SOURCE object.

SécuritéSecurity

PolyBase prend en charge l’authentification basée sur le proxy pour la plupart de ces sources de données externes.PolyBase supports proxy based authentication for most external data sources. Créez des informations d’identification au niveau de la base de données pour créer le compte proxy.Create a database scoped credential to create the proxy account.

Lorsque vous vous connectez au stockage ou au pool de données dans un cluster Big data de SQL Server, les informations d’identification de l’utilisateur sont transmises par le système back-end.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. Créez des connexions dans le pool de données lui-même pour activer l’authentification en transfert direct.Create logins in the data pool itself to enable pass through authentication.

Actuellement un jeton SAP avec le type HADOOP n’est pas pris en charge.Currently a SAS token with type HADOOP is unsupported. Il est uniquement pris en charge avec une clé d’accès de compte de stockage.It's only supported with a storage account access key. Toute tentative de créer une source de données externe avec le type HADOOP et les informations d’identification SAS échoue avec l’erreur :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.'

Exemples :Examples:

A.A. Créer une source de données externe pour faire référence au stockage d’objets blob AzureCreate external data source to reference Azure blob storage

Dans cet exemple, la source de données externe est un conteneur de stockage d’objets blob Azure appelé daily sous le compte de stockage Azure nommé logs.In this example, the external data source is an Azure blob storage container called daily under Azure storage account named logs. La source de données externe de stockage Azure sert au transfert des données uniquement.The Azure storage external data source is for data transfer only. Elle ne prend pas en charge le pushdown de prédicats.It doesn't support predicate push-down.

Cet exemple montre comment créer des informations d’identification limitées à la base de données qui serviront à l’authentification auprès du stockage Azure.This example shows how to create the database scoped credential for authentication to Azure storage. Spécifiez la clé du compte de stockage Azure dans le secret des informations d’identification de la base de données.Specify the Azure storage account key in the database credential secret. Vous pouvez spécifier toute chaîne de l’identité des informations d’identification limitées à la base de données, étant donné qu’elle n’est pas utilisée lors de l’authentification auprès du stockage Azure.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. Créer une source de données externe pour référencer Azure Data Lake Store Gen 1 ou 2 à l’aide d’un principal de serviceCreate external data source to reference Azure Data Lake Store Gen 1 or 2 using a service principal

La connectivité Azure Data Lake Store est basée sur votre URI ADLS et sur le principal de service de votre application Azure Active Directory.Azure Data lake Store connectivity can be based on your ADLS URI and your Azure Active directory Application's service principal. La documentation sur la création de cette application est disponible ici : [Authentification auprès de Data Lake Store à l’aide d’Azure Active Directory][azure_ad[].Documentation for creating this application can be found at [Data lake store authentication using Active Directory][azure_ad[].

-- 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
(    LOCATION       = 'abfss://newyorktaxidataset.azuredatalakestore.net' -- Please note the abfss endpoint when your account has secure transfer enabled
,    CREDENTIAL     = ADLS_credential
,    TYPE           = HADOOP
)
;

C.C. Créer une source de données externe pour référencer Azure Data Lake Store Gen 2 à l’aide d’une clé de compte de stockageCreate 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. Créer une source de données externe pour faire référence à la connectivité PolyBase à Azure Data Lake Store Gen 2Create external data source to reference Polybase connectivity to Azure Data Lake Store Gen 2

Il n’est pas nécessaire de spécifier SECRET lors de la connexion au compte Azure Data Lake Store Gen2 avec un mécanisme d’identité managée.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);

Voir aussiSee Also

SQL ServerSQL Server SQL DatabaseSQL Database SQL Data
Warehouse
SQL Data
Warehouse
* Analytics
Platform System (PDW) *
 
* Analytics
Platform System (PDW) *
 

 

Présentation : Système de la plateforme d'analyseOverview: Analytics Platform System

Crée une source de données externe pour des requêtes PolyBase.Creates an external data source for PolyBase queries. Des sources de données externes sont utilisées pour établir la connectivité et prendre en charge le cas d’utilisation suivant : Virtualisation des données et chargement des données à l’aide de PolyBaseExternal data sources are used to establish connectivity and support the following use case: Data virtualization and data load using PolyBase

SyntaxeSyntax

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

ArgumentsArguments

data_source_namedata_source_name

Spécifie le nom défini par l’utilisateur de la source de données.Specifies the user-defined name for the data source. Le nom doit être unique au sein du serveur dans le système de la plateforme d’analyse (Parallel Data Warehouse ou PDW).The name must be unique within the server in Analytics Platform System (Parallel Data Warehouse or PDW).

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

Fournit le protocole de connectivité et le chemin d’accès à la source de données externe.Provides the connectivity protocol and path to the external data source.

Source de données externeExternal Data Source Préfixe de l’emplacementLocation prefix Chemin d’emplacementLocation path
Cloudera ou HortonworksCloudera or Hortonworks hdfs <Namenode>[:port]
Stockage Blob AzureAzure Blob Storage wasb[s] <container>@<storage_account>.blob.core.windows.net

Chemin d’emplacement :Location path:

  • <NameNode> = Nom de la machine, nom de l’URI de service ou adresse IP du Namenode du cluster Hadoop.<Namenode> = the machine name, name service URI, or IP address of the Namenode in the Hadoop cluster. PolyBase doit résoudre tous les noms DNS utilisés par le cluster Hadoop.PolyBase must resolve any DNS names used by the Hadoop cluster.
  • port = Le port d’écoute de la source de données externe.port = The port that the external data source is listening on. Dans Hadoop, le port se trouve à l’aide du paramètre de configuration fs.defaultFS.In Hadoop, the port can be found using the fs.defaultFS configuration parameter. La valeur par défaut est 8020.The default is 8020.
  • <container> = le conteneur du compte de stockage contenant les données.<container> = the container of the storage account holding the data. Les conteneurs racines sont en lecture seule, donc les données ne peuvent pas être réécrites sur le conteneur.Root containers are read-only, data can't be written back to the container.
  • <storage_account> = le nom du compte de stockage de la ressource Azure.<storage_account> = the storage account name of the azure resource.

Remarques et conseils supplémentaires lors de la définition de l’emplacement :Additional notes and guidance when setting the location:

  • Le moteur PDW ne vérifie pas l’existence de la source de données externe lorsque l’objet est créé.The PDW engine doesn't verify the existence of the external data source when the object is created. Pour valider, créez une table externe à l’aide d’une source de données externe.To validate, create an external table using the external data source.
  • Utilisez la même source de données externe pour toutes les tables lors de l’interrogation de Hadoop afin de garantir la cohérence des paramètres sémantiques de requête.Use the same external data source for all tables when querying Hadoop to ensure consistent querying semantics.
  • wasb est le protocole par défaut pour le stockage d’objets blob Azure.wasb is the default protocol for Azure blob storage. wasbs est facultatif mais recommandé, car il permet d’envoyer les données au moyen d’une connexion SSL sécurisée.wasbs is optional but recommended as data will be sent using a secure SSL connection.
  • Pour garantir la réussite des requêtes PolyBase lors du basculement du Namenode Hadoop, envisagez d’utiliser une adresse IP virtuelle pour le Namenodedu cluster Hadoop.To ensure successful PolyBase queries during a Hadoop Namenode fail-over, consider using a virtual IP address for the Namenode of the Hadoop cluster. Dans le cas contraire, exécutez une commande ALTER EXTERNAL DATA SOURCE pour pointer vers le nouvel emplacement.If you don't, execute an ALTER EXTERNAL DATA SOURCE command to point to the new location.

CREDENTIAL = credential_nameCREDENTIAL = credential_name

Spécifie les informations d’identification limitées à la base de données servant à l’authentification auprès de la source de données externe.Specifies a database-scoped credential for authenticating to the external data source.

Remarques et conseils supplémentaires lors de la création d’informations d’identification :Additional notes and guidance when creating a credential:

  • Pour charger des données en provenance du stockage Blob Azure ou d’Azure Data Lake Store (ADLS) Gén. 2 dans SQL DW ou PDW, utilisez une clé de stockage Azure.To load data from either Azure Blob storage or Azure Data Lake Store (ADLS) Gen 2 into SQL DW or PDW, use an Azure Storage Key.
  • CREDENTIAL est requis uniquement si le blob a été sécurisé.CREDENTIAL is only required if the blob has been secured. CREDENTIAL n’est pas requis pour les jeux de données qui autorisent l’accès anonyme.CREDENTIAL isn't required for data sets that allow anonymous access.

TYPE = [ HADOOP ]TYPE = [ HADOOP ]

Spécifie le type de source de données externe en cours de configuration.Specifies the type of the external data source being configured. Ce paramètre n’est pas toujours requis.This parameter isn't always required.

  • Utilisez HADOOP lorsque la source de données externe est Cloudera, Hortonworks ou Stockage Blob Azure.Use HADOOP when the external data source is Cloudera, Hortonworks, or Azure Blob Storage.

Important

Ne paramétrez pas TYPE si vous utilisez toute autre source de données externe.Do not set TYPE if using any other external data source.

Pour un exemple d’utilisation de TYPE = HADOOP pour charger des données depuis le stockage Blob Azure, consultez Créer une source de données externes pour référencer le stockage blob Azure.For an example of using TYPE = HADOOP to load data from Azure Blob Storage, see Create external data source to reference Azure blob storage.

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

Configurez cette valeur facultative lors de la connexion à Hortonworks ou Cloudera.Configure this optional value when connecting to Hortonworks or Cloudera.

Lorsque RESOURCE_MANAGER_LOCATION est défini, l’optimiseur de requête prend une décision basée sur le coût pour améliorer les performances.When the RESOURCE_MANAGER_LOCATION is defined, the query optimizer will make a cost-based decision to improve performance. Une tâche MapReduce peut être utilisée pour transmettre le calcul à Hadoop.A MapReduce job can be used to push down the computation to Hadoop. En spécifiant RESOURCE_MANAGER_LOCATION, il est possible de considérablement réduire le volume des données transférées entre Hadoop et SQL, ce qui peut donc améliorer les performances des requêtes.Specifying the RESOURCE_MANAGER_LOCATION can significantly reduce the volume of data transferred between Hadoop and SQL, which can lead to improved query performance.

Si le Gestionnaire des ressources n’est pas spécifié, le transfert de calcul dans Hadoop est désactivé pour les requêtes PolyBase.If the Resource Manager isn't specified, pushing compute to Hadoop is disabled for PolyBase queries.

Si le port n’est pas spécifié, la valeur par défaut est déterminée d’après le paramètre actuel de la configuration de la « connexion à hadoop ».If the port isn't specified, the default value is chosen using the current setting for 'hadoop connectivity' configuration.

Connexion HadoopHadoop Connectivity Port du Gestionnaire de ressources par défautDefault Resource Manager Port
11 5030050300
22 5030050300
33 80218021
44 80328032
55 80508050
66 80328032
77 80508050

Pour obtenir la liste complète des versions de Hadoop prises en charge, consultez Configuration de la connectivité PolyBase (Transact-SQL).For a complete list of supported Hadoop versions, see PolyBase Connectivity Configuration (Transact-SQL).

Important

La valeur RESOURCE_MANAGER_LOCATION n’est pas validée lorsque vous créez la source de données externe.The RESOURCE_MANAGER_LOCATION value is not validated when you create the external data source. La saisie d’une valeur incorrecte peut entraîner l’échec de la requête au moment de l’exécution chaque fois qu’une transmission est tentée, étant donné que la valeur fournie ne serait pas en mesure d’être résolue.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.

Créer une source de données externe pour faire référence à Hadoop avec la transmission activée fournit un exemple concret ainsi que des instructions complémentaires.Create external data source to reference Hadoop with push-down enabled provides a concrete example and further guidance.

AutorisationsPermissions

Nécessite l’autorisation CONTROL sur la base de données dans le système de la plateforme d’analyse (Parallel Data Warehouse ou PDW).Requires CONTROL permission on database in Analytics Platform System (Parallel Data Warehouse or PDW).

Notes

Dans les versions précédentes de PDW, la création d’une source de données externe nécessitait des autorisations ALTER ANY EXTERNAL DATA SOURCE.In previous releases of PDW, create external data source required ALTER ANY EXTERNAL DATA SOURCE permissions.

VerrouillageLocking

Prend un verrou partagé sur l’objet EXTERNAL DATA SOURCE.Takes a shared lock on the EXTERNAL DATA SOURCE object.

SécuritéSecurity

PolyBase prend en charge l’authentification basée sur le proxy pour la plupart de ces sources de données externes.PolyBase supports proxy based authentication for most external data sources. Créez des informations d’identification au niveau de la base de données pour créer le compte proxy.Create a database scoped credential to create the proxy account.

Actuellement un jeton SAP avec le type HADOOP n’est pas pris en charge.Currently a SAS token with type HADOOP is unsupported. Il est uniquement pris en charge avec une clé d’accès de compte de stockage.It's only supported with a storage account access key. Toute tentative de créer une source de données externe avec le type HADOOP et les informations d’identification SAS échoue avec l’erreur :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.'

Exemples :Examples:

A.A. Créer une source de données externe pour faire référence à HadoopCreate external data source to reference Hadoop

Pour créer une source de données externe pour faire référence à votre cluster Hortonworks ou Cloudera Hadoop, spécifiez le nom de l’ordinateur ou l’adresse IP du port et du Namenode Hadoop.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. Créer une source de données externe pour faire référence à Hadoop avec transmission activéeCreate external data source to reference Hadoop with push-down enabled

Spécifiez l’option RESOURCE_MANAGER_LOCATION pour activer le calcul transmis à Hadoop pour des requêtes PolyBase.Specify the RESOURCE_MANAGER_LOCATION option to enable push-down computation to Hadoop for PolyBase queries. Une fois activé, PolyBase prend une décision basée sur les coûts pour déterminer si le calcul de la requête doit être poussé vers Hadoop.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. Créer une source de données externe pour faire référence à Hadoop sécurisé par KerberosCreate external data source to reference Kerberos-secured Hadoop

Pour vérifier si le cluster Hadoop est sécurisé par Kerberos, regardez la valeur de la propriété hadoop.security.authentication dans Hadoop core-site.xml.To verify if the Hadoop cluster is Kerberos-secured, check the value of hadoop.security.authentication property in Hadoop core-site.xml. Pour faire référence à un cluster Hadoop sécurisé par Kerberos, vous devez spécifier des informations d’identification limitées à la base de données qui contiennent votre nom d’utilisateur et votre mot de passe Kerberos.To reference a Kerberos-secured Hadoop cluster, you must specify a database scoped credential that contains your Kerberos username and password. La clé principale de la base de données est utilisée pour chiffrer le secret des informations d’identification limitées à la base de données.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. Créer une source de données externe pour faire référence au stockage d’objets blob AzureCreate external data source to reference Azure blob storage

Dans cet exemple, la source de données externe est un conteneur de stockage d’objets blob Azure appelé daily sous le compte de stockage Azure nommé logs.In this example, the external data source is an Azure blob storage container called daily under Azure storage account named logs. La source de données externe de stockage Azure sert au transfert des données uniquement.The Azure storage external data source is for data transfer only. Elle ne prend pas en charge le pushdown de prédicats.It doesn't support predicate push-down.

Cet exemple montre comment créer des informations d’identification limitées à la base de données qui serviront à l’authentification auprès du stockage Azure.This example shows how to create the database scoped credential for authentication to Azure storage. Spécifiez la clé du compte de stockage Azure dans le secret des informations d’identification de la base de données.Specify the Azure storage account key in the database credential secret. Vous pouvez spécifier toute chaîne de l’identité des informations d’identification limitées à la base de données, étant donné qu’elle n’est pas utilisée lors de l’authentification auprès du stockage Azure.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
)
;

Voir aussiSee Also