UBAH SUMBER DATA EKSTERNAL (Transact-SQL)
Berlaku untuk: SQL Server 2016 (13.x) dan yang lebih baru Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform 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 MEMBUAT SUMBER DATA EKSTERNAL (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 Hadoop Resource Manager. 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 CAKUPAN 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 UBAH SUMBER DATA EKSTERNAL apa pun memberi prinsipal kemampuan untuk membuat dan memodifikasi objek sumber data eksternal apa pun, dan oleh karena itu, ia juga memberikan kemampuan untuk mengakses semua kredensial cakupan 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 lokasi Resource Manager dari 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