ALTER EXTERNAL DATA SOURCE(Transact-SQL)

적용 대상: SQL Server 2016(13.x) 이상 Azure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

외부 테이블을 만드는데 사용되는 외부 데이터 원본을 수정합니다. 외부 데이터 원본은 SQL Server용 Hadoop 또는 Azure Blob Storage(WASBS) 및 Azure Synapse Analytics용 Azure Blob Storage(WASBS) 또는 Azure Data Lake 스토리지(ABFSS/ADL)일 수 있습니다.

2022년 SQL Server(16.x)부터 Hadoop 외부 데이터 원본은 지원되지 않습니다. 또한 Azure Blob Storage 및 Azure Data Lake Gen 2 접두사는 다음 표를 참조하세요.

외부 데이터 원본 시작 대상
Azure Blob Storage 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>]' 외부 데이터 원본에 대한 연결 프로토콜, 경로 및 포트를 제공합니다. 유효한 위치 옵션은 CREATE EXTERNAL DATA SOURCE(Transact-SQL)를 참조하세요.

RESOURCE_MANAGER_LOCATION = '<IP address;Port>'(Azure Synapse Analytics 및 SQL Server 2022(16.x)에 적용되지 않음) Hadoop Resource Manager 위치를 지정합니다. 지정된 경우 쿼리 최적화 프로그램은 Hadoop의 계산 기능을 사용하여 PolyBase 쿼리의 데이터를 사전 처리하도록 선택할 수 있습니다. 이것은 비용 기반 결정입니다. 조건자 푸시 다운이라는 이 기능은 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은 Azure Blob 스토리지의 URL에 유효해야 합니다. LOCATION URL 끝에 /, 파일 이름 또는 공유 액세스 서명 매개 변수를 두지 마세요. SHARED ACCESS SIGNATURE를 ID로 사용하여 자격 증명을 만들어야 합니다. 공유 액세스 서명에 대한 자세한 내용은 SAS(공유 액세스 서명) 사용을 참조하세요.

설명

한 번에 하나의 원본만 수정할 수 있습니다. 동일한 원본을 수정하기 위한 동시 요청은 하나의 명령문이 기다려야 합니다. 그러나 다른 원본은 동시에 수정할 수 있습니다. 이 명령문은 다른 명령문과 동시에 실행할 수 있습니다.

Azure Synapse Analytics에서 Azure BLOB 스토리지 또는 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
    ;

다음 예제에서는 자격 증명을 새 위치로 변경 합니다. 이 예제는 Azure Synapse Analytics에 대해 생성된 외부 데이터 원본입니다.

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