ALTER EXTERNAL DATA SOURCE (Transact-SQL)

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Modifica un origen de datos externo usado para crear una tabla externa. El origen de datos externo puede ser Hadoop o Azure Blob Storage (WASBS) para SQL Server, y Azure Blob Storage (WASBS) o Azure Data Lake Storage (ABFSS/ADL) para Azure Synapse Analytics.

A partir de SQL Server 2022 (16.x) ya no se admiten orígenes de datos externos de Hadoop. Además, los prefijos de Azure Data Lake Gen 2 y Azure Blob Storage han cambiado; consulte la tabla siguiente:

Origen de datos externo De En
Azure Blob Storage wasb[s] abs
ADLS Gen2 abfs[s] adls

Sintaxis

-- 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 ] 

Argumentos

data_source_name especifica el nombre definido por el usuario para el origen de datos. El nombre debe ser único.

LOCATION = "<:prefijo>://<ruta de acceso>[:<puerto>]" proporciona el protocolo de conectividad, la ruta de acceso y el puerto al origen de datos externo. Vea CREATE EXTERNAL DATA SOURCE (Transact-SQL) para obtener las opciones de ubicación válidas.

RESOURCE_MANAGER_LOCATION = "<dirección IP;Puerto>" (No se aplica a Azure Synapse Analytics ni a SQL Server 2022 (16.x)). Especifica la ubicación del Administrador de recursos de Hadoop. Cuando se especifica, el optimizador de consultas podría preprocesar los datos de una consulta de PolyBase mediante el uso de las funciones de cálculo de Hadoop. Esta es una decisión basada en el costo. Esta técnica, denominada aplicación de predicado, puede reducir significativamente el volumen de datos transferidos entre Hadoop y SQL y, por tanto, mejorar el rendimiento de las consultas.

CREDENTIAL = Credential_Name especifica la credencial con nombre. Consulte CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

TYPE = [HADOOP | BLOB_STORAGE] Se aplica a: SQL Server 2017 (14.x) y SQL Server 2019 (15.x). Solo para operaciones masivas, LOCATION debe ser la dirección URL válida en Azure Blob Storage. No coloque /, el nombre de archivo o parámetros de firma de acceso compartido al final de la dirección URL de LOCATION. La credencial debe crearse mediante el uso de SHARED ACCESS SIGNATURE como identidad. Para más información sobre las firmas de acceso compartido, vea Uso de Firmas de acceso compartido (SAS).

Observaciones

Solo puede modificarse un único origen de cada vez. Las solicitudes simultáneas para modificar el mismo origen hacen que una instrucción tenga que esperar. Aun así, es posible modificar varios orígenes al mismo tiempo. Esta instrucción se puede ejecutar simultáneamente con otras instrucciones.

En Azure Synapse Analytics, las conexiones a orígenes de datos externos que apuntan a Azure Blob Storage o Azure Data Lake Storage solo se admiten en grupos de SQL dedicados.

Permisos

Requiere el permiso ALTER ANY EXTERNAL DATA SOURCE.

Importante

El permiso ALTER ANY EXTERNAL DATA SOURCE concede a cualquier entidad de seguridad la capacidad de crear y modificar cualquier objeto de origen de datos externo y, por tanto, también permite acceder a todas las credenciales con ámbito de base de datos de la base de datos. Debe considerarse como un permiso con muchos privilegios, por lo que solo debe concederse a las entidades de seguridad de confianza del sistema.

Ejemplos

En el ejemplo siguiente se modifica la ubicación y la ubicación del Administrador de recursos de un origen de datos existente. No se aplica a 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'
    ;

En el ejemplo siguiente se modifica la credencial para conectar con un origen de datos existente.

ALTER EXTERNAL DATA SOURCE hadoop_eds SET
   CREDENTIAL = new_hadoop_user
    ;

En el ejemplo siguiente se modifica la credencial a una nueva ubicación. Este ejemplo es un origen de datos externo creado para Azure Synapse Analytics.

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