Поделиться через


ALTER EXTERNAL DATA SOURCE (Transact-SQL)

Область применения: SQL Server 2016 (13.x) и более поздних версий Управляемый экземпляр SQL Azure базе данных SQL Azure Synapse Analytics Analytics Platform System (PDW) в Microsoft Fabric

Изменяет внешний источник данных, используемый для создания внешней таблицы. Внешний источник данных может быть 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-адрес<; Порт> (не применяется к Azure Synapse Analytics и SQL Server 2022 (16.x)) Указывает расположение Hadoop Resource Manager. Если аргумент указан, оптимизатор запросов может выбрать предварительную обработку данных для запросов 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. Не помещайте /в конец URL-адреса параметры подписи, имени файла или подписанного LOCATION URL-адреса. Учетные данные, которые вы используете, должны быть созданы в SHARED ACCESS SIGNATURE качестве удостоверения. Дополнительные сведения о подписанных URL-адресах см. в статье Использование подписанных URL-адресов.

Замечания

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

В 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