UBAH PUSTAKA EKSTERNAL (Transact-SQL)

Berlaku untuk: SQL Server 2017 (14.x) dan Azure SQL Managed Instance yang lebih baru

Memodifikasi konten pustaka paket eksternal yang ada.

Catatan

Di 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

Di 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 dilingkupkan ke pengguna. Nama pustaka harus unik dalam konteks pengguna atau pemilik tertentu.

Nama pustaka tidak dapat ditetapkan secara segan-segan. 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. Di 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. Di SQL Server 2019, Windows dan Linux adalah platform yang didukung.

BAHASA = 'R'

Menentukan bahasa paket. R didukung di SQL Server 2017.

bahasa

Menentukan bahasa paket. Nilainya bisa R atau Python di Azure SQL Managed Instance.

bahasa

Menentukan bahasa paket. Nilainya bisa R, Python, atau nama bahasa eksternal (lihat BUAT BAHASA EKSTERNAL).

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Keterangan

Untuk bahasa R, paket harus disiapkan dalam bentuk file arsip zip dengan ekstensi .ZIP untuk Windows. Di 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 berupa 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 apa 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 konten 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_scripttersimpan .

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 jauh lebih lama.

Baca juga

BUAT PUSTAKA EKSTERNAL (Transact-SQL)
DROP EXTERNAL LIBRARY (Transact-SQL)
sys.external_library_files
sys.external_libraries