Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru
Mendaftarkan ekstensi bahasa eksternal dalam database dari jalur file atau aliran byte yang ditentukan. Pernyataan ini adalah mekanisme umum bagi administrator database untuk mendaftarkan ekstensi bahasa eksternal baru pada platform OS apa pun yang didukung SQL Server. Untuk informasi selengkapnya, lihat Ekstensi Bahasa.
Catatan
R dan Python adalah nama yang dicadangkan. Anda tidak dapat membuat bahasa eksternal dengan nama-nama spesifik tersebut. Untuk informasi selengkapnya tentang cara menggunakan R dan Python, lihat SQL Server Pembelajaran Mesin Services.
Sintaks
CREATE EXTERNAL LANGUAGE language_name
[ AUTHORIZATION owner_name ]
FROM <file_spec> [ ,...2 ]
[ ; ]
<file_spec> ::=
{
( CONTENT = { <external_lang_specifier> | <content_bits> },
FILE_NAME = <external_lang_file_name>
[ , PLATFORM = <platform> ]
[ , PARAMETERS = <external_lang_parameters> ]
[ , ENVIRONMENT_VARIABLES = <external_lang_env_variables> ] )
}
<external_lang_specifier> :: =
{
'[file_path\]os_file_name'
}
<content_bits> :: =
{
varbinary_literal
| varbinary_expression
}
<external_lang_file_name> :: =
'extension_file_name'
<platform> :: =
{
WINDOWS
| LINUX
}
<external_lang_parameters> :: =
'extension_specific_parameters'
Argumen
language_name
Bahasa adalah objek cakupan database. Nama bahasa harus unik dalam database.
owner_name
Menentukan nama pengguna atau peran yang memiliki bahasa eksternal. Jika Anda tidak menentukan nilai, pengguna saat ini akan menjadi pemiliknya. Bergantung pada izin, pengguna lain mungkin memerlukan izin eksplisit untuk mengeksekusi skrip menggunakan bahasa tertentu.
file_spec
Menentukan konten ekstensi bahasa. Hanya satu <file_spec> yang diizinkan untuk bahasa tertentu, per platform.
external_lang_specifier
Jalur file lengkap ke file .zip atau tar.gz yang berisi kode ekstensi. Konten ini dapat berupa jalur ke file .zip (di Windows) atau file tar.gz (di Linux).
content_bits
Menentukan konten bahasa sebagai hex literal, mirip dengan rakitan.
Gunakan opsi ini saat sistem file server dibatasi dan Anda tidak dapat menyalin file pustaka ke lokasi yang dapat diakses server. Anda harus memiliki izin yang diperlukan untuk membuat atau mengubah bahasa.
external_lang_file_name
Nama ekstensi .dll atau file .so. Nama tersebut mengidentifikasi file yang benar ketika ada beberapa file .dll atau .so di <external_lang_specifier> .zip atau tar.gz.
external_lang_parameters
Menentukan serangkaian parameter untuk diteruskan ke runtime bahasa eksternal. Runtime eksternal menerima nilai parameter setelah proses eksternal dimulai. Variabel lingkungan, sebaliknya, dapat diakses oleh ekstensi bahasa sebelum proses eksternal dimulai.
external_lang_env_variables
Menentukan sekumpulan variabel lingkungan yang akan tersedia untuk runtime bahasa eksternal sebelum proses eksternal dimulai. Misalnya, atur direktori beranda runtime itu sendiri, seperti JRE_HOME.
platform
Parameter ini diperlukan untuk skenario OS hibrid. Dalam arsitektur hibrid, Anda harus mendaftarkan bahasa sekali per platform. Jika Anda tidak menentukan platform, SQL Server mengasumsikan OS saat ini.
Izin
Memerlukan CREATE EXTERNAL LANGUAGE izin. Secara default, setiap anggota peran database tetap db_owner memiliki izin untuk membuat bahasa eksternal. Untuk semua pengguna lain, Anda harus secara eksplisit memberikan izin dengan menggunakan GRANT pernyataan, yang menentukan CREATE EXTERNAL LANGUAGE sebagai hak istimewa.
Untuk memodifikasi pustaka, Anda memerlukan izin terpisah, ALTER ANY EXTERNAL LANGUAGE.
Izin JALANKAN SKRIP EKSTERNAL
Gunakan EXECUTE EXTERNAL SCRIPT izin untuk memberikan eksekusi skrip eksternal pada bahasa tertentu.
EXECUTE EXTERNAL SCRIPT berbeda dari EXECUTE ANY EXTERNAL SCRIPT izin database, yang tidak mengizinkan pemberian izin eksekusi pada bahasa tertentu.
Berikan izin kepada pengguna non-dbo untuk menjalankan bahasa tertentu:
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::language_name
TO database_principal_name;
Izin referensi ke pustaka eksternal
Mirip dengan rakitan, bahasa eksternal memerlukan izin referensi sehingga ada tautan antara pustaka eksternal dan bahasa eksternal. Misalnya, sebelum Anda menghapus bahasa eksternal, Anda harus menghapus semua pustaka eksternal yang mereferensikannya. Lihat bahasa eksternal sebagai objek tingkat yang lebih tinggi daripada pustaka eksternal dalam hierarki.
Contoh
J. Membuat bahasa eksternal dalam database
Contoh berikut menambahkan bahasa eksternal yang disebut Java ke database di SQL Server di Windows.
CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll');
GO
B. Membuat bahasa eksternal untuk Windows dan Linux
Anda dapat menentukan hingga dua <file_spec>, satu untuk Windows dan satu untuk Linux.
CREATE EXTERNAL LANGUAGE Java
FROM
(CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll', PLATFORM = WINDOWS),
(CONTENT = N'<path-to-tar.gz>', FILE_NAME = 'javaextension.so', PLATFORM = LINUX);
GO
C. Memberikan izin untuk menjalankan skrip eksternal
Contoh berikut memberikan akses utama mylogin untuk menjalankan skrip menggunakan bahasa eksternal Java .
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::Java
TO mylogin;