ALTER EXTERNAL DATA SOURCE (Transact-SQL)

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Modifie une source de données externe utilisée pour créer une table externe. La source de données externe peut être un stockage Hadoop ou Stockage Blob Azure (WASBS) pour SQL SERVER et Stockage Blob Azure (WASBS) ou Azure Data Lake (ABFSS/ADL) pour Azure Synapse Analytics.

À compter de SQL Server 2022 (16.x), les sources de données externes Hadoop ne sont plus prises en charge. En outre, les préfixes du Stockage Blob Azure et d’Azure Data Lake Gen2 ont changé (cf. tableau suivant) :

Source de données externe Du À
Stockage Blob Azure wasb[s] abs
ADLS Gen2 abfs[s] adls

Syntaxe

-- Modify an external data source
-- Applies to: SQL Server (2016, 2017 and 2019) and APS
ALTER EXTERNAL DATA SOURCE data_source_name SET
    {   
        LOCATION = '<prefix>://<path>[:<port>]' [,] |
        RESOURCE_MANAGER_LOCATION = <'IP address;Port'> [,] |
        CREDENTIAL = credential_name
    }  
    [;]  

-- Modify an external data source pointing to Azure Blob storage
-- Applies to: SQL Server (2017 and 2019)
ALTER EXTERNAL DATA SOURCE data_source_name
    SET
        LOCATION = 'https://storage_account_name.blob.core.windows.net'
        [, CREDENTIAL = credential_name ] 

-- Modify an external data source pointing to Azure Blob storage
-- Applies to: SQL Server 2022
ALTER EXTERNAL DATA SOURCE data_source_name
    SET
        LOCATION = 'abs://storage_account_name.blob.core.windows.net'
        [, CREDENTIAL = credential_name ] 

-- Modify an external data source pointing to Azure Data Lake Storage Gen2
-- Applies to: SQL Server 2022
ALTER EXTERNAL DATA SOURCE data_source_name
    SET
        LOCATION = 'adls://storage_account_name.dfs.core.windows.net'
        [, CREDENTIAL = credential_name ] 

-- Modify an external data source pointing to Azure Blob storage or Azure Data Lake storage
-- Applies to: Azure Synapse Analytics dedicated SQL pool only
ALTER EXTERNAL DATA SOURCE data_source_name
    SET
        [LOCATION = '<location prefix>://<location path>']
        [, CREDENTIAL = credential_name ] 

Arguments

data_source_name Spécifie le nom défini par l’utilisateur de la source de données. Le nom doit être unique.

LOCATION = ’<préfixe>://<chemin>[:<port>]’ : fournit le protocole de connectivité, le chemin et le port de la source de données externe. Pour connaître les options d’emplacement valides, consultez CREATE EXTERNAL DATA SOURCE (Transact-SQL).

RESOURCE_MANAGER_LOCATION = ’<Adresse IP;Port>’ (non applicable à Azure Synapse Analytics ni à SQL Server 2022 (16.x)) : spécifie l’emplacement du Gestionnaire des ressources Hadoop. S’il est spécifié, l’optimiseur de requête peut choisir de prétraiter les données d’une requête PolyBase en utilisant les fonctionnalités de calcul d’Hadoop. C’est une décision basée sur les coûts. Appelée pushdown de prédicats, cette opération peut considérablement réduire le volume des données transférées entre Hadoop et SQL, et donc améliorer les performances des requêtes.

CREDENTIAL = Credential_Name Spécifie les informations d’identification nommées. Cf. CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

TYPE = [HADOOP | BLOB_STORAGE] S’applique à : SQL Server 2017 (14.x) et SQL Server 2019 (15.x). Pour les opérations en bloc uniquement, LOCATION doit être valide dans l’URL vers le stockage Blob Azure. Ne placez pas /, le nom du fichier ni les paramètres de signature d’accès partagé à la fin de l’URL LOCATION. Les informations d’identification utilisées doivent être créées avec l’identité SHARED ACCESS SIGNATURE. Pour plus d’informations sur les signatures d’accès partagé, consultez Utilisation des signatures d’accès partagé (SAP).

Notes

Une seule une source peut être modifiée à la fois. Des demandes simultanées de modifications de la même source provoquent l’attente d’une instruction. Toutefois, différentes sources peuvent être modifiés en même temps. Cette instruction peut s’exécuter en même temps que d’autres instructions.

Dans Azure Synapse Analytics, les connexions à des sources de données externes pointant vers le Stockage Blob Azure ou Azure Data Lake Storage sont prises en charge dans le pool SQL dédié uniquement.

Autorisations

Exige l’autorisation ALTER ANY EXTERNAL DATA SOURCE.

Important

L’autorisation ALTER ANY EXTERNAL DATA SOURCE accorde à n’importe quel principal la possibilité de créer et de modifier tout objet de source de données externe. Par conséquent, elle permet également d’accéder à toutes les informations d’identification délimitées à la base de données. Cette autorisation doit être considérée comme fournissant des privilèges très élevés, et doit donc être accordée uniquement aux principaux de confiance du système.

Exemples

L’exemple suivant modifie l’emplacement d’une source de données existante ainsi que celui de son gestionnaire de ressources. Ne s’applique pas à SQL Server 2022 (16.x).

ALTER EXTERNAL DATA SOURCE hadoop_eds SET
     LOCATION = 'hdfs://10.10.10.10:8020',
     RESOURCE_MANAGER_LOCATION = '10.10.10.10:8032'
    ;

L’exemple suivant modifie les informations d’identification permettant de se connecter à une source de données existante.

ALTER EXTERNAL DATA SOURCE hadoop_eds SET
   CREDENTIAL = new_hadoop_user
    ;

L’exemple suivant modifie les informations d’identification vers un nouvel emplacement. Cet exemple est une source de données externe créée pour Azure Synapse Analytics.

ALTER EXTERNAL DATA SOURCE AzureStorage_west SET
   LOCATION = 'wasbs://loadingdemodataset@updatedproductioncontainer.blob.core.windows.net',
   CREDENTIAL = AzureStorageCredential