ALTER EXTERNAL DATA SOURCE (Transact-SQL)
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Azure SQL Instancia administrada Azure Synapse Analytics Analytics 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