ALTER EXTERNAL LIBRARY (Transact-SQL)
Berlaku untuk: SQL Server 2017 (14.x) dan yang lebih baru Azure SQL Managed Instance
Memodifikasi konten pustaka paket eksternal yang ada.
Catatan
Pada SQL Server 2017, bahasa R dan platform Windows didukung. R, Python, dan bahasa eksternal pada platform Windows dan Linux didukung di SQL Server 2019 dan yang lebih baru.
Catatan
Dalam Azure SQL Managed Instance, Anda dapat mengubah pustaka dengan menghapusnya lalu menggunakan sqlmlutils untuk menginstal versi yang diubah. Untuk informasi selengkapnya tentang sqlmlutils, lihat Menginstal paket Python dengan sqlmlutils dan Menginstal paket R baru dengan sqlmlutils.
Sintaks untuk SQL Server 2019
ALTER EXTERNAL LIBRARY library_name
[ AUTHORIZATION owner_name ]
SET <file_spec>
WITH ( LANGUAGE = <language> )
[ ; ]
<file_spec> ::=
{
(CONTENT = { <client_library_specifier> | <library_bits> | NONE}
[, PLATFORM = <platform> )
}
<client_library_specifier> :: =
{
'[\\computer_name\]share_name\[path\]manifest_file_name'
| '[local_path\]manifest_file_name'
| '<relative_path_in_external_data_source>'
}
<library_bits> :: =
{
varbinary_literal
| varbinary_expression
}
<platform> :: =
{
WINDOWS
| LINUX
}
<language> :: =
{
'R'
| 'Python'
| <external_language>
}
Sintaks untuk SQL Server 2017
ALTER EXTERNAL LIBRARY library_name
[ AUTHORIZATION owner_name ]
SET <file_spec>
WITH ( LANGUAGE = 'R' )
[ ; ]
<file_spec> ::=
{
(CONTENT = { <client_library_specifier> | <library_bits> | NONE}
[, PLATFORM = WINDOWS )
}
<client_library_specifier> :: =
{
'[\\computer_name\]share_name\[path\]manifest_file_name'
| '[local_path\]manifest_file_name'
| '<relative_path_in_external_data_source>'
}
<library_bits> :: =
{
varbinary_literal
| varbinary_expression
}
Sintaks untuk Azure SQL Managed Instance
CREATE EXTERNAL LIBRARY library_name
[ AUTHORIZATION owner_name ]
FROM <file_spec> [ ,...2 ]
WITH ( LANGUAGE = <language> )
[ ; ]
<file_spec> ::=
{
(CONTENT = <library_bits>)
}
<library_bits> :: =
{
varbinary_literal
| varbinary_expression
}
<language> :: =
{
'R'
| 'Python'
}
Argumen
library_name
Menentukan nama pustaka paket yang ada. Pustaka dilingkup ke pengguna. Nama pustaka harus unik dalam konteks pengguna atau pemilik tertentu.
Nama pustaka tidak dapat ditetapkan secara arbitrer. Artinya, Anda harus menggunakan nama yang diharapkan runtime panggilan saat memuat paket.
owner_name
Menentukan nama pengguna atau peran yang memiliki pustaka eksternal.
file_spec
Menentukan konten paket untuk platform tertentu. Hanya satu artefak file per platform yang didukung.
File dapat ditentukan dalam bentuk jalur lokal atau jalur jaringan. Jika opsi sumber data ditentukan, nama file dapat menjadi jalur relatif sehubungan dengan kontainer yang dirujuk dalam EXTERNAL DATA SOURCE
.
Secara opsional, platform OS untuk file dapat ditentukan. Hanya satu artefak atau konten file yang diizinkan untuk setiap platform OS untuk bahasa atau runtime tertentu.
library_bits
Menentukan konten paket sebagai hex literal, mirip dengan rakitan.
Opsi ini berguna jika Anda memiliki izin yang diperlukan untuk mengubah pustaka, tetapi akses file di server dibatasi dan Anda tidak dapat menyimpan konten ke jalur yang dapat diakses server.
Sebagai gantinya, Anda dapat meneruskan konten paket sebagai variabel dalam format biner.
platform = WINDOWS
Menentukan platform untuk konten pustaka. Nilai ini diperlukan saat memodifikasi pustaka yang ada untuk menambahkan platform yang berbeda. Pada SQL Server 2017, Windows adalah satu-satunya platform yang didukung.
platform
Menentukan platform untuk konten pustaka. Nilai ini diperlukan saat memodifikasi pustaka yang ada untuk menambahkan platform yang berbeda. Pada SQL Server 2019, Windows dan Linux adalah platform yang didukung.
BAHASA = 'R'
Menentukan bahasa paket. R didukung pada SQL Server 2017.
bahasa
Menentukan bahasa paket. Nilainya bisa R atau Python dalam Azure SQL Managed Instance.
bahasa
Menentukan bahasa paket. Nilainya bisa R, Python, atau nama bahasa eksternal (lihat CREATE EXTERNAL LANGUAGE).
Catatan
Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.
Keterangan
Untuk bahasa R, paket harus disiapkan dalam bentuk file arsip zip dengan ekstensi .ZIP untuk Windows. Pada SQL Server 2017, hanya platform Windows yang didukung.
Untuk bahasa R, saat menggunakan file, paket harus disiapkan dalam bentuk file arsip zip dengan ekstensi .ZIP.
Untuk bahasa Python, paket dalam file .whl atau .zip harus disiapkan dalam bentuk file arsip zip. Jika paket sudah merupakan file .zip, paket harus disertakan dalam file .zip baru. Mengunggah paket sebagai file .whl atau .zip secara langsung saat ini tidak didukung.
Pernyataan ALTER EXTERNAL LIBRARY
hanya mengunggah bit pustaka ke database. Pustaka yang dimodifikasi diinstal saat pengguna menjalankan kode di sp_execute_external_script (Transact-SQL) yang memanggil pustaka.
Sejumlah paket, yang disebut sebagai paket sistem, telah diinstal sebelumnya dalam instans SQL. Paket sistem tidak dapat ditambahkan, diperbarui, atau dihapus oleh pengguna.
Izin
Secara default, pengguna dbo atau anggota peran mana pun db_owner memiliki izin untuk menjalankan ALTER EXTERNAL LIBRARY. Selain itu, pengguna yang membuat pustaka eksternal dapat mengubah pustaka eksternal tersebut.
Contoh
Contoh berikut mengubah pustaka eksternal yang disebut customPackage
.
Mengganti isi pustaka menggunakan file
Contoh berikut memodifikasi pustaka eksternal yang disebut customPackage
, menggunakan file zip yang berisi bit yang diperbarui.
ALTER EXTERNAL LIBRARY customPackage
SET
(CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\customPackage.zip')
WITH (LANGUAGE = 'R');
Untuk menginstal pustaka yang diperbarui, jalankan prosedur sp_execute_external_script
tersimpan .
EXEC sp_execute_external_script
@language =N'R',
@script=N'library(customPackage)'
;
Untuk bahasa Python, contohnya juga berfungsi dengan mengganti 'R'
dengan 'Python'
.
Mengubah pustaka yang sudah ada menggunakan aliran byte
Contoh berikut mengubah pustaka yang ada dengan meneruskan bit baru sebagai literal heksadesimal.
ALTER EXTERNAL LIBRARY customLibrary
SET (CONTENT = 0xABC123...) WITH (LANGUAGE = 'R');
Untuk bahasa Python, contohnya juga berfungsi dengan mengganti 'R'
dengan 'Python'
.
Catatan
Sampel kode ini hanya menunjukkan sintaks; nilai biner di telah dipotong CONTENT =
untuk keterbacaan dan tidak membuat pustaka yang berfungsi. Konten aktual dari variabel biner akan lebih lama.
Lihat juga
CREATE EXTERNAL LIBRARY (Transact-SQL)
DROP EXTERNAL LIBRARY (Transact-SQL)
sys.external_library_files
sys.external_libraries