ALTER EXTERNAL DATA SOURCE (Transact-SQL)

Gilt für: SQL Server 2016 (13.x) und höher Azure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Ändert eine externe Datenquelle, die zum Erstellen einer externen Tabelle verwendet wird. Bei der externen Datenquelle kann es sich um Hadoop oder Azure Blob Storage (WASBS) für SQL Server und Azure Blob Storage (WASBS) oder um Azure Data Lake Storage (ABFSS/ADL) für Azure Synapse Analytics handeln.

Ab SQL Server 2022 (16.x) werden externe Datenquellen von Hadoop nicht mehr unterstützt. Außerdem wurden Azure Blob Storage und Azure Data Lake Gen2-Präfixe geändert. Sie die folgende Tabelle:

Externe Datenquelle From Beschreibung
Azure Blob Storage wasb[s] abs
ADLS Gen2 abfs[s] adls

Syntax

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

Argumente

Data_source_name gibt den benutzerdefinierten Namen für die Datenquelle an. Der Name muss eindeutig sein.

„LOCATION = '<prefix>://<path>[:<port>]'“: Dient zum Angeben des Konnektivitätsprotokolls, des Pfads und des Ports der externen Datenquelle. Weitere Informationen über gültige Speicherortoptionen finden Sie unter CREATE EXTERNAL DATA SOURCE (Transact-SQL).

RESOURCE_MANAGER_LOCATION = <IP address;Port>' (Gilt nicht für Azure Synapse Analytics und SQL Server 2022 (16.x)) Gibt den Speicherort des Hadoop-Ressourcen-Managers an. Wenn angegeben, kann der Abfrageoptimierer festlegen, dass Daten für eine PolyBase-Abfrage mithilfe der Berechnungsfunktionen von Hadoop vorverarbeitet werden. Dies ist eine kostenbasierte Entscheidung. Dies wird Prädikatweitergabe genannt und kann die Menge der zwischen Hadoop und SQL übertragenen Daten deutlich reduzieren und damit die Abfrageleistung verbessern.

CREDENTIAL = Credential_Name gibt die benannten Anmeldeinformationen an. See CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

TYPE = [HADOOP | BLOB_STORAGE] Gilt für: SQL Server 2017 (14.x) und SQL Server 2019 (15.x). Nur bei Massenvorgängen muss LOCATION die gültige URL für den Azure Blob Storage sein. Fügen Sie weder /, Dateinamen noch Shared Access Signature-Parameter am Ende der LOCATION-URL ein. Die verwendeten Anmeldeinformationen müssen mithilfe von SHARED ACCESS SIGNATURE als Identität erstellt werden. Weitere Informationen zu SAS finden Sie unter Verwenden von Shared Access Signatures (SAS).

Bemerkungen

Es kann immer jeweils nur eine Quelle geändert werden. Gleichzeitige Anforderungen zur Änderung derselben Quelle führen dazu, dass eine Anweisung warten muss. Unterschiedliche Quellen können jedoch gleichzeitig geändert werden. Diese Anweisung kann gleichzeitig mit anderen Anweisungen ausgeführt werden.

In Azure Synapse Analytics werden Verbindungen mit externen Datenquellen, die auf Azure Blob Storage oder Azure Data Lake Storage verweisen, nur in dedizierten SQL-Pools unterstützt.

Berechtigungen

Erfordert eine ALTER ANY EXTERNAL DATA SOURCE-Berechtigung.

Wichtig

Mit der Berechtigung ALTER ANY EXTERNAL DATA SOURCE besitzt jeder Prinzipal die Fähigkeit, beliebige externe Datenquellenobjekte zu erstellen und zu ändern. Damit ist auch der Zugriff auf alle datenbankweit gültigen Anmeldeinformationen der Datenbank möglich. Da es sich hierbei um eine weitreichende Berechtigung handelt, darf sie nur vertrauenswürdigen Prinzipalen innerhalb des Systems erteilt werden.

Beispiele

Im folgenden Beispiel wird der Speicherort und der Resource Manager-Speicherort einer vorhandenen Datenquelle geändert. Gilt nicht für: 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'
    ;

Im folgenden Beispiel werden die Anmeldeinformationen zur Verbindung mit einer vorhandenen Datenquelle geändert.

ALTER EXTERNAL DATA SOURCE hadoop_eds SET
   CREDENTIAL = new_hadoop_user
    ;

Im folgenden Beispiel werden die Anmeldeinformationen in einen neuen Speicherort geändert. Bei diesem Beispiel handelt es sich um einer externe Datenquelle für Azure Synapse Analytics.

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