共用方式為


ALTER EXTERNAL DATA SOURCE (Transact-SQL)

適用於:SQL Server 2016 (13.x) 及以後版本 Azure SQL 資料庫Azure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW) Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的 Warehouse 中的 Microsoft Fabric中的 SQL 資料庫

修改用來建立外部數據表的外部數據源,用於PolyBase和數據虛擬化功能。 外部資料源可以是適用於 SQL SERVER 的 Hadoop 或 Azure Blob 儲存體 (WASBS),以及適用於 Azure Synapse Analytics 的 Azure Blob 儲存體 (WASBS) 或 Azure Data Lake 儲存體 (ABFSS/ADL)。

從 SQL Server 2022 (16.x) 開始,不再支援 Hadoop 外部資料來源。 此外,Azure Blob 儲存體和 Azure Data Lake Gen 2 前置詞已變更,請參閱下表:

外部資料來源 寄件者 收件者
Azure Blob Storage wasb[s] abs
ADLS Gen2 abfs[s] adls

Transact-SQL 語法慣例

語法

修改外部數據源。 SQL Server 的語法(2016、2017 和 2019)和分析平台系統(PDW)。

-- 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
    }  
    [;]  

修改指向 Azure Blob 記憶體的外部數據源。 SQL Server 的語法 (2017 和 2019)。

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

修改指向 Azure Blob 記憶體的外部數據源。 SQL Server 2022 和更新版本的語法。

-- Modify an external data source pointing to Azure Blob storage
-- Applies to: SQL Server 2022 and later versions
ALTER EXTERNAL DATA SOURCE data_source_name
    SET
        LOCATION = 'abs://storage_account_name.blob.core.windows.net'
        [, CREDENTIAL = credential_name ] 

修改指向 Azure Data Lake Storage (ADLS) Gen2 的外部數據源。 SQL Server 2022 和更新版本的語法。

-- Modify an external data source pointing to Azure Data Lake Storage Gen2
-- Applies to: SQL Server 2022 and later versions
ALTER EXTERNAL DATA SOURCE data_source_name
    SET
        LOCATION = 'adls://storage_account_name.dfs.core.windows.net'
        [, CREDENTIAL = credential_name ] 

修改指向 Azure Blob 記憶體或 Azure Data Lake Storage 的外部數據源。 僅限 Azure Synapse Analytics 專用 SQL 集區的語法。

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

指定資料來源的使用者定義名稱。 名稱必須是唯一的。

位置

提供外部數據源的連線通訊協議、路徑和埠。 如需有效位置選項,請參閱 CREATE EXTERNAL DATA SOURCE (Transact-SQL)

RESOURCE_MANAGER_LOCATION = '<IP 位址;>埠'

不適用於 Azure Synapse Analytics 和 SQL Server 2022 (16.x))

指定 Hadoop Resource Manager 位置。 指定時,查詢最佳化工具可能會使用 Hadoop 的計算功能,選擇對適用於 PolyBase 查詢的資料進行前置處理。 這是成本型決策。 這稱為述詞下推,可大幅降低在 Hadoop 與 SQL 之間傳輸的資料量,因而改善查詢效能。

認證 = Credential_Name

指定具名認證。 請參閱 CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)

TYPE = [ HADOOP |BLOB_STORAGE ] **

適用於: 僅限 SQL Server 2017 (14.x) 和 SQL Server 2019 (15.x)。

僅適用於大量作業,LOCATION 必須是有效的 Azure Blob 儲存體 URL。 請勿在 URL 結尾/放置 LOCATION、檔名或共用存取簽章參數。

必須使用 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
    ;

下列範例會將認證更改為新的 LOCATION。 這個範例是針對 Azure Synapse Analytics 所建立的外部資料來源。

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