ALTER EXTERNAL DATA SOURCE (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e posterior Instância Gerenciada de SQL do Azure PDW (Sistema de Plataforma de Análise) do Azure Synapse Analytics

Modifica uma fonte de dados externa usada para criar uma tabela externa. A fonte de dados externa pode ser o Hadoop ou o WASBS (Armazenamento de Blobs do Azure) para SQL SERVER e o WASBS (Armazenamento de Blobs do Azure) ou o ABFSS/ADL (Azure Data Lake Storage) para o Azure Synapse Analytics.

A partir do SQL Server 2022 (16.x), não há mais suporte para as fontes de dados externas do Hadoop. Além disso, Armazenamento de Blobs do Azure e prefixos do Azure Data Lake Gen 2 alterados, confira a seguinte tabela:

Fonte de dados externa De Para
Armazenamento do Blobs do Azure wasb[s] abs
ADLS Gen2 abfs[s] adls

Sintaxe

-- 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 o nome da fonte de dados definido pelo usuário. O nome deve ser exclusivo.

LOCATION = '<prefix>://<path>[:<port>]' Fornece o protocolo de conectividade, o caminho e a porta para a fonte de dados externa. Confira CREATE EXTERNAL DATA SOURCE (Transact-SQL) para opções de localização válidas.

RESOURCE_MANAGER_LOCATION = '<IP address;Port>' (Não se aplica ao Azure Synapse Analytics e SQL Server 2022 (16.x)) Especifica a localização do Hadoop Resource Manager. Quando especificado, o otimizador de consulta pode escolher pré-processar os dados para uma consulta do PolyBase usando os recursos de computação do Hadoop. Essa é uma decisão baseada em custo. Chamado de pushdown de predicado, isso pode reduzir significativamente o volume de dados transferidos entre o Hadoop e o SQL e, portanto, melhorar o desempenho da consulta.

CREDENTIAL = Credential_Name Especifica a credencial nomeada. Confira CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

TYPE = [HADOOP | BLOB_STORAGE] Aplica-se a: SQL Server 2017 (14.x) e SQL Server 2019 (15.x). Somente para operações em massa, LOCATION precisa ser a URL válida para o Armazenamento de Blobs do Azure. Não coloque /, nome de arquivo ou parâmetros de Assinatura de Acesso Compartilhado no final da URL de LOCATION. A credencial que você usar deve ser criada usando SHARED ACCESS SIGNATURE como a identidade. Para mais informações sobre assinaturas de acesso compartilhado, consulte Usando SAS (Assinatura de Acesso Compartilhado).

Comentários

Somente uma única fonte pode ser modificada de cada vez. Solicitações simultâneas para modificar a mesma fonte fazem com que uma instrução precise esperar. No entanto, fontes diferentes podem ser modificados ao mesmo tempo. Essa instrução pode ser executada simultaneamente com outras instruções.

No Azure Synapse Analytics, as conexões com fontes de dados externas apontando para o Armazenamento de Blobs do Azure ou para o armazenamento do Azure Data Lake têm suporte apenas no pool SQL dedicado.

Permissões

Requer a permissão ALTER ANY EXTERNAL DATA SOURCE.

Importante

A permissão ALTER ANY EXTERNAL DATA SOURCE concede a qualquer entidade de segurança a capacidade de criar e modificar qualquer objeto de fonte de dados externa e, portanto, isso também concede a capacidade de acessar todas as credenciais no escopo do banco de dados no banco de dados. Essa permissão precisa ser considerada como altamente privilegiada e, portanto, ser concedida somente para entidades de segurança confiáveis no sistema.

Exemplos

O exemplo a seguir altera o local e a localização do Resource Manager de uma fonte de dados existente. Não 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'
    ;

O exemplo a seguir altera a credencial para conectar-se a uma fonte de dados existente.

ALTER EXTERNAL DATA SOURCE hadoop_eds SET
   CREDENTIAL = new_hadoop_user
    ;

O exemplo a seguir altera a credencial para uma LOCATION nova. Este exemplo é uma fonte de dados externa criada para o Azure Synapse Analytics.

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