BUAT BAHASA EKSTERNAL (T-SQL)
Berlaku untuk: SQL Server 2019 (15.x)
Mendaftarkan ekstensi bahasa eksternal dalam database dari jalur file atau aliran byte yang ditentukan. Pernyataan ini berfungsi sebagai mekanisme umum bagi administrator database untuk mendaftarkan ekstensi bahasa eksternal baru pada platform OS apa pun yang didukung oleh SQL Server. Untuk informasi selengkapnya, lihat Ekstensi Bahasa.
Catatan
R dan Python adalah nama yang dicadangkan dan tidak ada bahasa eksternal yang dapat dibuat dengan nama tertentu 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 tidak ditentukan, kepemilikan diberikan kepada pengguna saat ini. Bergantung pada izin, pengguna lain mungkin perlu diberikan izin eksplisit untuk menjalankan skrip menggunakan bahasa tertentu.
file_spec
Menentukan konten ekstensi bahasa. Hanya satu filespec 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 menjadi jalur ke file .zip (di Windows) atau tar.gz (di Linux).
content_bits
Menentukan konten bahasa sebagai hex literal, mirip dengan rakitan.
Opsi ini berguna jika Anda perlu membuat bahasa atau mengubah bahasa yang ada (dan memiliki izin yang diperlukan untuk melakukannya), tetapi sistem file di server dibatasi dan Anda tidak dapat menyalin file pustaka ke lokasi yang dapat diakses server.
external_lang_file_name
Nama ekstensi .dll atau file .so. Ini diperlukan untuk mengidentifikasi file yang benar, dalam kasus di mana ada beberapa file .dll atau .so di <external_lang_specifier .zip> atau tar.gz.
external_lang_parameters
Ini memberikan kemungkinan untuk memberikan serangkaian parameter ke runtime bahasa eksternal. Nilai parameter disediakan untuk runtime eksternal setelah proses eksternal dimulai. Namun, variabel lingkungan dapat diakses oleh ekstensi bahasa sebelum startup proses eksternal.
external_lang_env_variables
Ini memberikan kemungkinan untuk memberikan serangkaian variabel lingkungan ke runtime bahasa eksternal sebelum startup proses eksternal. Contoh variabel lingkungan adalah misalnya direktori beranda runtime itu sendiri. Misalnya: JRE_HOME.
platform
Parameter ini diperlukan untuk skenario OS hibrid. Dalam arsitektur hibrid, bahasa perlu didaftarkan sekali per platform. Jika tidak ada platform yang ditentukan, OS saat ini diasumsikan.
Izin
Memerlukan CREATE EXTERNAL LANGUAGE
izin. Secara default, setiap pengguna yang memiliki dbo yang merupakan anggota peran db_owner memiliki izin untuk membuat bahasa eksternal. Untuk semua pengguna lain, Anda harus secara eksplisit memberi mereka izin menggunakan pernyataan GRANT , menentukan CREATE EXTERNAL LANGUAGE sebagai hak istimewa.
Untuk mengubah pustaka memerlukan izin terpisah, ALTER ANY EXTERNAL LANGUAGE
.
Izin JALANKAN SKRIP EKSTERNAL
Anda dapat menggunakan izin EXECUTE EXTERNAL SCRIPT, sehingga eksekusi skrip eksternal dapat diberikan pada bahasa tertentu. Ini berbeda dari izin database EXECUTE ANY EXTERNAL SCRIPT, yang tidak mengizinkan pemberian izin eksekusi pada bahasa tertentu.
Ini berarti bahwa pengguna non-dbo perlu diberikan izin 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, izin referensi diperlukan untuk bahasa eksternal sehingga ada tautan antara pustaka eksternal dan bahasa eksternal. Misalnya, jika bahasa eksternal akan dihilangkan, pertama-tama pengguna perlu memastikan semua pustaka eksternal yang mereferensikan bahasa tersebut dihilangkan. Anda dapat melihat 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;
Lihat juga
UBAH BAHASA EKSTERNAL (Transact-SQL)
DROP EXTERNAL LANGUAGE (Transact-SQL)
sys.external_languages
sys.external_language_files