Compartilhar via


ALTERAR FONTE DE DADOS EXTERNA (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores do Banco de Dados SQL doAzure Azure Instância GerenciadaAzure Synapse Analytics AnalyticsPlatform System (PDW)Ponto de extremidade de análise SQL no Microsoft Fabric Warehouse no Banco de Dados SQLdo Microsoft Fabricno Microsoft Fabric

Modifica uma fonte de dados externa usada para criar uma tabela externa, usada para recursos de virtualização de dados e PolyBase. 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
Azure Blob Storage wasb[s] abs
ADLS Gen2 abfs[s] adls

Convenções de sintaxe de Transact-SQL

Sintaxe

Modificar uma fonte de dados externa. Sintaxe para SQL Server (2016, 2017 e 2019) e PDW (Analytics Platform System).

-- 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
    }  
    [;]  

Modifique uma fonte de dados externa apontando para o Armazenamento de Blobs do Azure. Sintaxe para SQL Server (2017 e 2019).

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

Modifique uma fonte de dados externa apontando para o Armazenamento de Blobs do Azure. Sintaxe para o SQL Server 2022 e versões posteriores.

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

Modifique uma fonte de dados externa apontando para o AdLS (Azure Data Lake Storage) Gen2. Sintaxe para o SQL Server 2022 e versões posteriores.

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

Modifique uma fonte de dados externa apontando para o Armazenamento de Blobs do Azure ou para o Azure Data Lake Storage. Sintaxe somente para o pool de SQL dedicado do Azure Synapse Analytics.

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

LOCALIZAÇÃO

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 = '<Endereço IP; Porta>'

Não se aplica ao Azure Synapse Analytics e ao SQL Server 2022 (16.x))

Especifica o local do Gerenciador de Recursos do Hadoop. 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.

CREDENCIAL = Credential_Name

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

TIPO = [ HADOOP | BLOB_STORAGE ] **

Aplica-se a: SOMENTE 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 um /parâmetro de assinatura de acesso compartilhado ou nome de arquivo no final da LOCATION URL.

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