ALTER EXTERNAL DATA SOURCE (Transact-SQL)

Si applica a: SQL Server 2016 (13.x) e versioni successive Istanza gestita di SQL di AzureAzure Synapse Analytics AnalyticsPlatform System (PDW)

Modifica un'origine dati esterna usata per creare una tabella esterna. L'origine dati esterna può essere Hadoop o Archiviazione BLOB di Azure (WASBS) per SQL SERVER e Archiviazione BLOB di Azure (WASBS) o Azure Data Lake Storage (ABFSS/ADL) per Azure Synapse Analytics.

A partire da SQL Server 2022 (16.x), le origini dati esterne di Hadoop non sono più supportate. Inoltre, Archiviazione BLOB di Azure e i prefissi di Azure Data Lake Gen 2 modificati, fare riferimento alla tabella seguente:

Origine dati esterna Da A
Archiviazione BLOB di Azure wasb[s] abs
ADLS Gen2 abfs[s] adls

Sintassi

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

Argomenti

data_source_name Specifica il nome definito dall'utente per l'origine dati. Il nome deve essere univoco.

LOCATION = '<prefix>://<path>[:<port>]' Fornisce il protocollo di connettività e il percorso dell'origine dati esterna. Per un elenco delle opzioni di percorso valide, vedere CREATE EXTERNAL DATA SOURCE (Transact-SQL).

RESOURCE_MANAGER_LOCATION = '<Indirizzo IP; Port>' (non si applica a Azure Synapse Analytics e SQL Server 2022 (16.x)) Specifica il percorso di Resource Manager Hadoop. Quando specificato, Query Optimizer può scegliere di pre-elaborare i dati di una query PolyBase usando le funzionalità di calcolo di Hadoop. Questa decisione si basa sui costi. Il pushdown dei predicati può ridurre notevolmente il volume dei dati trasferiti tra Hadoop e SQL e pertanto migliorare le prestazioni delle query.

CREDENTIAL = Credential_Name Specifica la credenziale denominata. Vedere CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

TYPE = [HADOOP | BLOB_STORAGE] Si applica a: SQL Server 2017 (14.x) e SQL Server 2019 (15.x). Solo per le operazioni bulk, LOCATION deve essere l'URL valido dell'archiviazione BLOB di Azure. Non inserire /, nome file o parametri di firma di accesso condiviso alla fine dell'URL LOCATION . Le credenziali usate devono essere create usando SHARED ACCESS SIGNATURE come identità. Per altre informazioni sulle firme di accesso condiviso, vedere Uso delle firme di accesso condiviso.

Osservazioni

È possibile modificare una sola origine per volta. Le richieste simultanee di modifica della stessa origine mettono in attesa un'istruzione. È invece possibile modificare origini diverse nello stesso momento. Questa istruzione può essere eseguita contemporaneamente ad altre istruzioni.

In Azure Synapse Analytics le connessioni alle origini dati esterne che puntano all'Archiviazione BLOB di Azure o ad Azure Data Lake Storage sono supportate solo nel pool SQL dedicato.

Autorizzazioni

È necessaria l'autorizzazione ALTER ANY EXTERNAL DATA SOURCE.

Importante

L'autorizzazione ALTER ANY EXTERNAL DATA SOURCE concede a qualsiasi entità di sicurezza la possibilità di creare e modificare qualsiasi oggetto origine dati esterna e, di conseguenza, la possibilità di accedere a tutte le credenziali con ambito database nel database. Questa autorizzazione deve essere considerata con privilegi elevati e quindi essere concessa solo a entità attendibili nel sistema.

Esempi

Nell'esempio seguente viene modificato il percorso e la posizione Resource Manager di un'origine dati esistente. Non si applica 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'
    ;

Nell'esempio seguente viene modificata la credenziale per connettersi a un'origine dati esistente.

ALTER EXTERNAL DATA SOURCE hadoop_eds SET
   CREDENTIAL = new_hadoop_user
    ;

Nell'esempio seguente le credenziali vengono modificate con un nuovo percorso. Questo esempio è un'origine dati esterna creata per Azure Synapse Analytics.

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