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