ALTER EXTERNAL DATA SOURCE (Transact-SQL)

Применимо к: SQL Server 2016 (13.x) и более поздних версий Управляемый экземпляр SQL AzureAzure Synapse AnalyticsAnalytics Analytics Platform System (PDW)

Изменяет внешний источник данных, используемый для создания внешней таблицы. Внешний источник данных может быть Hadoop или Хранилище BLOB-объектов Azure (WASBS) для SQL SERVER и Хранилище BLOB-объектов Azure (WASBS) или Azure Data Lake Storage (ABFSS/ADL) для Azure Synapse Analytics.

Начиная с SQL Server 2022 г. (16.x) внешние источники данных Hadoop больше не поддерживаются. Кроме того, Хранилище BLOB-объектов Azure и префиксы Azure Data Lake 2-го поколения изменены, см. следующую таблицу:

Внешний источник данных Исходный тип Кому
хранилище BLOB-объектов Azure wasb(s) abs
ADLS 2-го поколения abfs(s) adls

Синтаксис

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

Аргументы

data_source_name указывает определяемое пользователем имя источника данных. Имя должно быть уникальным.

LOCATION = '<prefix>://<path>[:<port>]' Предоставляет протокол, путь и порт для подключения к внешнему источнику данных. Допустимые параметры расположения см. в разделе CREATE EXTERNAL DATA SOURCE (Transact-SQL).

RESOURCE_MANAGER_LOCATION = '<IP-адрес; Port>' (не применяется к Azure Synapse Analytics и SQL Server 2022 (16.x)) Указывает расположение Resource Manager Hadoop. Если аргумент указан, оптимизатор запросов может выбрать предварительную обработку данных для запросов PolyBase с помощью вычислительных мощностей Hadoop. Это решение, принимаемое на основе стоимости. Оно называется передачей предиката и может значительно сократить объем данных, передаваемых между Hadoop и SQL, повышая производительность запросов.

CREDENTIAL = Credential_Name Указывает именованные учетные данные. См. CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

TYPE = [HADOOP | BLOB_STORAGE] Применимо к: SQL Server 2017 (14.x) и SQL Server 2019 (15.x). Только для массовых операций — LOCATION должен быть допустимым URL-адресом хранилища больших двоичных объектов Azure. Не помещайте /параметры , имени файла или подписанного LOCATION URL-адреса в конце URL-адреса. Используемые учетные данные должны быть созданы с помощью в SHARED ACCESS SIGNATURE качестве удостоверения. Дополнительные сведения о подписанных URL-адресах см. в статье Использование подписанных URL-адресов.

Remarks

Одновременно можно изменить только один источник. Параллельные запросы на изменение того же источника приводят к помещению одной инструкции в режим ожидания. Однако одновременно можно изменять разные источники. Эта инструкция может выполняться параллельно с другими инструкциями.

В Azure Synapse Analytics подключения к внешним источникам данных, указывающим на Хранилище BLOB-объектов Azure или хранилище Azure Data Lake, поддерживаются только в выделенном пуле SQL.

Разрешения

Требуется разрешение ALTER ANY EXTERNAL DATA SOURCE.

Важно!

Разрешение ALTER ANY EXTERNAL DATA SOURCE предоставляет любому субъекту возможность создания и изменения объекта внешнего источника данных и, таким образом, также предоставляет возможность доступа ко всем учетным данным уровня базы данных в базе данных. Это разрешение следует рассматривать как высоко привилегированное, поэтому его следует предоставлять только доверенным субъектам в системе.

Примеры

В следующем примере изменяется расположение и Resource Manager расположение существующего источника данных. Не применяется к 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'
    ;

В следующем примере изменяются учетные данные для подключения к источнику данных.

ALTER EXTERNAL DATA SOURCE hadoop_eds SET
   CREDENTIAL = new_hadoop_user
    ;

В следующем примере учетные данные изменяются на новое значение LOCATION. Этот пример представляет собой внешний источник данных, созданный для Azure Synapse Analytics.

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