UBAH SUMBER DATA EKSTERNAL (Transact-SQL)

Berlaku untuk: SQL Server 2016 (13.x) dan yang lebih baru Azure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Memodifikasi sumber data eksternal yang digunakan untuk membuat tabel eksternal. Sumber data eksternal dapat berupa Hadoop atau Azure Blob Storage (WASBS) untuk SQL SERVER dan Azure Blob Storage (WASBS) atau penyimpanan Azure Data Lake (ABFSS/ADL) untuk Azure Synapse Analytics.

Mulai SQL Server 2022 (16.x), sumber data eksternal Hadoop tidak lagi didukung. Selain itu, awalan Azure Blob Storage dan Azure Data Lake Gen 2 berubah, lihat tabel berikut:

Sumber Data Eksternal Dari Untuk
Azure Blob Storage wasb[s] abs
ADLS Gen2 abfs[s] adls

Sintaks

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

Argumen

data_source_name Menentukan nama yang ditentukan pengguna untuk sumber data. Nama harus unik.

LOCATION = '<prefix>://<path>[:<port>]' Menyediakan protokol konektivitas, jalur, dan port ke sumber data eksternal. Lihat CREATE EXTERNAL DATA SOURCE (Transact-SQL) untuk opsi lokasi yang valid.

RESOURCE_MANAGER_LOCATION = '<Alamat IP; Port>' (Tidak berlaku untuk Azure Synapse Analytics dan SQL Server 2022 (16.x)) Menentukan lokasi Resource Manager Hadoop. Saat ditentukan, pengoptimal kueri mungkin memilih untuk melakukan pra-proses data untuk kueri PolyBase dengan menggunakan kemampuan komputasi Hadoop. Ini adalah keputusan berbasis biaya. Disebut pushdown predikat, ini dapat secara signifikan mengurangi volume data yang ditransfer antara Hadoop dan SQL, dan karenanya meningkatkan performa kueri.

CREDENTIAL = Credential_Name Menentukan kredensial bernama. Lihat MEMBUAT KREDENSIAL LINGKUP DATABASE (Transact-SQL).

TYPE = [HADOOP | BLOB_STORAGE] Berlaku untuk: SQL Server 2017 (14.x) dan SQL Server 2019 (15.x). Hanya untuk operasi massal, LOCATION harus valid URL ke penyimpanan Azure Blob. Jangan letakkan /, nama file, atau parameter tanda tangan akses bersama di akhir LOCATION URL. Kredensial yang Anda gunakan harus dibuat menggunakan SHARED ACCESS SIGNATURE sebagai identitas. Untuk informasi selengkapnya tentang tanda tangan akses bersama, lihat Menggunakan Tanda Tangan Akses Bersama (SAS).

Keterangan

Hanya satu sumber yang dapat dimodifikasi pada satu waktu. Permintaan bersamaan untuk memodifikasi sumber yang sama menyebabkan satu pernyataan menunggu. Namun, sumber yang berbeda dapat dimodifikasi secara bersamaan. Pernyataan ini dapat berjalan bersamaan dengan pernyataan lain.

Di Azure Synapse Analytics, koneksi ke sumber data eksternal yang menunjuk ke penyimpanan Azure Blob atau penyimpanan Azure Data Lake hanya didukung di kumpulan SQL khusus.

Izin

Memerlukan izin UBAH SUMBER DATA EKSTERNAL APA PUN.

Penting

Izin ALTER ANY EXTERNAL DATA SOURCE memberi prinsipal kemampuan untuk membuat dan memodifikasi objek sumber data eksternal apa pun, dan oleh karena itu, juga memberikan kemampuan untuk mengakses semua kredensial lingkup database pada database. Izin ini harus dianggap sangat istimewa, dan oleh karena itu harus diberikan hanya kepada prinsipal tepercaya dalam sistem.

Contoh

Contoh berikut mengubah lokasi dan Resource Manager lokasi sumber data yang ada. Tidak berlaku untuk 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'
    ;

Contoh berikut mengubah kredensial untuk menyambungkan ke sumber data yang sudah ada.

ALTER EXTERNAL DATA SOURCE hadoop_eds SET
   CREDENTIAL = new_hadoop_user
    ;

Contoh berikut mengubah kredensial ke LOCATION baru. Contoh ini adalah sumber data eksternal yang dibuat untuk Azure Synapse Analytics.

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