ALTER EXTERNAL DATA SOURCE (Transact-SQL)
适用于: SQL Server 2016(13.x)及更高版本Azure SQL 托管实例 Azure Synapse Analytics Platform System (PDW)
修改用于创建外部表的外部数据源。 外部数据源可以是适用于 SQL Server 的 Hadoop 或 Azure Blob 存储 (WASBS) 和适用于 Azure Synapse Analytics 的 Azure Blob 存储 (WASBS) 或 Azure Data Lake Storage (ABFSS/ADL)。
从 SQL Server 2022 (16.x) 开始,不再支持 Hadoop 外部数据源。 此外,Azure Blob 存储和 Azure Data Lake Gen 2 前缀已更改,请参阅下表:
外部数据源 | 源 | 功能 |
---|---|---|
Azure Blob 存储 | wasb[s] | abs |
ADLS Gen2 | 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>]':提供外部数据源的连接协议、路径和端口。 若要了解有效的位置选项,请参阅创建外部数据源 (Transact-SQL)。
RESOURCE_MANAGER_LOCATION = '<IP address;Port>'(不适用于 Azure Synapse Analytics 和 SQL Server 2022 (16.x))指定 Hadoop 资源管理器位置。 如果指定,查询优化器可以选择通过使用 Hadoop 的计算功能预处理 PolyBase 查询的数据。 这是基于开销的决策。 这称为谓词下推,可以显著减少 Hadoop 和 SQL之间传输的数据量,并因此提高查询性能。
CREDENTIAL = Credential_Name 指定命名凭据。 请参阅创建数据库作用于凭据 (Transact-SQL)。
TYPE = [HADOOP | BLOB_STORAGE] 适用于:SQL Server 2017 (14.x) 和 SQL Server 2019 (15.x)。
仅对于大容量操作,LOCATION
必须是有效的 Azure Blob 存储 URL。 请勿将 /、文件名或共享访问签名参数放在 LOCATION
URL 的末尾。
必须使用 SHARED ACCESS SIGNATURE
作为标识创建使用的凭据。 有关共享访问签名的详细信息,请参阅使用共享访问签名 (SAS)。
备注
一次只能修改一个源。 修改同一个源的并发请求会导致一个语句等待。 但是,可以同时修改不同的源。 此语句可以与其他语句同时运行。
在 Azure Synapse Analytics 中,仅在专用 SQL 池中支持连接指向 Azure Blob 存储或 Azure Data Lake 存储的外部数据源。
权限
需要 ALTER ANY EXTERNAL DATA SOURCE 权限。
重要
ALTER ANY EXTERNAL DATA SOURCE 权限授予任何主体创建和修改任何外部数据源对象的能力,因此,它还授予访问数据库上所有数据库作用域凭据的能力。 必须将此权限视为高度特权,因此必须仅授予系统中受信任的主体。
示例
下面的示例更改了现有数据源的位置和资源管理器位置。 不适用于 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
;
以下示例将凭证更改为新位置。 此示例是为 Azure Synapse Analytics 创建的外部数据源。
ALTER EXTERNAL DATA SOURCE AzureStorage_west SET
LOCATION = 'wasbs://loadingdemodataset@updatedproductioncontainer.blob.core.windows.net',
CREDENTIAL = AzureStorageCredential