Partilhar via


ALTERAR FONTE DE DADOS EXTERNA (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL analytics endpoint em Microsoft FabricWarehouse em Microsoft Fabric SQLdatabase in Microsoft Fabric

Modifica uma fonte de dados externa usada para criar uma tabela externa, usada para PolyBase e recursos de virtualização de dados. A fonte de dados externa pode ser Hadoop ou Azure Blob Storage (WASBS) para SQL SERVER e Azure Blob Storage (WASBS) ou Azure Data Lake storage (ABFSS/ADL) para Azure Synapse Analytics.

A partir do SQL Server 2022 (16.x), as fontes de dados externas do Hadoop não são mais suportadas. Além disso, os prefixos do Armazenamento de Blobs do Azure e do Azure Data Lake Gen 2 foram alterados, consulte a tabela a seguir:

Fonte de dados externa De Para
Azure Blob Storage wasb[s] abs
ADLS Gen2 abfs[s] adls

Transact-SQL convenções de sintaxe

Sintaxe

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

-- 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 Blob 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 Blob do Azure. Sintaxe para 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 Azure Data Lake Storage (ADLS) Gen2. Sintaxe para 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 Armazenamento do Azure Data Lake. Sintaxe apenas para o pool 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 definido pelo usuário para a fonte de dados. O nome tem de ser exclusivo.

LOCALIZAÇÃO

Fornece o protocolo, o caminho e a porta de conectividade para a fonte de dados externa. Consulte CREATE EXTERNAL DATA SOURCE (Transact-SQL) para obter opções de localização válidas.

RESOURCE_MANAGER_LOCATION = «<Endereço IP; Porto>»

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

Especifica o local do Hadoop Resource Manager. Quando especificado, o otimizador de consulta pode optar por pré-processar dados para uma consulta PolyBase usando os recursos de computação do Hadoop. Trata-se de uma decisão baseada nos custos. Chamado de pushdown de predicado, isso pode reduzir significativamente o volume de dados transferidos entre Hadoop e SQL e, portanto, melhorar o desempenho da consulta.

CREDENCIAL = Credential_Name

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

TIPO = [ HADOOP | BLOB_STORAGE ] **

Aplica-se a: SQL Server 2017 (14.x) e SQL Server 2019 (15.x) apenas.

Apenas para operações em massa, LOCATION deve ser válida a URL para o armazenamento de Blob do Azure. Não coloque um nome de arquivo ou parâmetros /de assinatura de acesso compartilhado no final da LOCATION URL.

A credencial que você usa deve ser criada usando SHARED ACCESS SIGNATURE como identidade. Para obter mais informações sobre assinaturas de acesso compartilhado, consulte Usando assinaturas de acesso compartilhado (SAS).

Observações

Apenas uma única fonte pode ser modificada de cada vez. Solicitações simultâneas para modificar a mesma fonte fazem com que uma instrução aguarde. No entanto, diferentes fontes podem ser modificadas ao mesmo tempo. Esta 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 Blob do Azure ou o armazenamento do Azure Data Lake são suportadas 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, também concede a capacidade de acessar todas as credenciais de escopo do banco de dados no banco de dados. Essa permissão deve ser considerada altamente privilegiada e, portanto, deve ser concedida apenas a entidades confiáveis no sistema.

Exemplos

O exemplo a seguir altera o local e o local do Gerenciador de Recursos de uma fonte de dados existente.

Não se aplica ao 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 se conectar 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 um novo LOCATION. 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