Udostępnij przez


ALTER EXTERNAL LIBRARY (Transact-SQL)

Dotyczy: SQL Server 2017 (14.x) i nowsze wersje usługi Azure SQL Managed Instance

Modyfikuje zawartość istniejącej zewnętrznej biblioteki pakietów.

Uwaga / Notatka

W programie SQL Server 2017 (14.x) obsługiwane są języki R i platforma Windows. Języki R, Python i zewnętrzne na platformach Windows i Linux są obsługiwane w programie SQL Server 2019 (15.x) i nowszych wersjach.

Składnia dla programu 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>
}

Składnia programu 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
}

Składnia dla usługi 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'
}

Arguments

LIBRARY_NAME

Określa nazwę istniejącej biblioteki pakietów. Biblioteki są ograniczone do użytkownika. Nazwy bibliotek muszą być unikatowe w kontekście określonego użytkownika lub właściciela.

Nazwa biblioteki nie może być dowolnie przypisana. Oznacza to, że należy użyć nazwy oczekiwanej przez środowisko uruchomieniowe wywołujące podczas ładowania pakietu.

OWNER_NAME

Określa nazwę użytkownika lub roli, która jest właścicielem biblioteki zewnętrznej.

FILE_SPEC

Określa zawartość pakietu dla określonej platformy. Obsługiwany jest tylko jeden artefakt pliku na platformę.

Plik można określić w postaci ścieżki lokalnej lub ścieżki sieciowej. Jeśli zostanie określona opcja źródła danych, nazwa pliku może być ścieżką względną w odniesieniu do kontenera, do których odwołuje się EXTERNAL DATA SOURCEelement .

Opcjonalnie można określić platformę systemu operacyjnego dla pliku. Tylko jeden artefakt lub zawartość pliku jest dozwolony dla każdej platformy systemu operacyjnego dla określonego języka lub środowiska uruchomieniowego.

LIBRARY_BITS

Określa zawartość pakietu jako literał szesnastkowy, podobny do zestawów.

Ta opcja jest przydatna, jeśli masz wymagane uprawnienie do zmiany biblioteki, ale dostęp do plików na serwerze jest ograniczony i nie można zapisać zawartości na ścieżce, do której serwer może uzyskać dostęp.

Zamiast tego możesz przekazać zawartość pakietu jako zmienną w formacie binarnym.

PLATFORMA = WINDOWS

Określa platformę zawartości biblioteki. Ta wartość jest wymagana podczas modyfikowania istniejącej biblioteki w celu dodania innej platformy. W programie SQL Server 2017 (14.x) system Windows jest jedyną obsługiwaną platformą.

PLATFORMY

Określa platformę zawartości biblioteki. Ta wartość jest wymagana podczas modyfikowania istniejącej biblioteki w celu dodania innej platformy. W programie SQL Server 2019 (15.x) obsługiwane są systemy Windows i Linux.

LANGUAGE = 'R'

Określa język pakietu. Język R jest obsługiwany w programie SQL Server 2017 (14.x).

LANGUAGE

Określa język pakietu. Wartość może być R lub Python w usłudze Azure SQL Managed Instance.

LANGUAGE

Określa język pakietu. Wartość może mieć Rwartość , Pythonlub nazwę języka zewnętrznego (zobacz CREATE EXTERNAL LANGUAGE).

Uwagi

W przypadku języka R pakiety muszą być przygotowane w postaci skompresowanych plików archiwum z .zip rozszerzeniem dla systemu Windows. W programie SQL Server 2017 (14.x) obsługiwana jest tylko platforma systemu Windows.

W przypadku języka R w przypadku korzystania z pliku pakiety muszą być przygotowane w postaci spakowanego pliku archiwum z .zip rozszerzeniem .

W przypadku języka Python pakiet w .whl pliku lub .zip musi być przygotowany w postaci spakowanego pliku archiwum. Jeśli pakiet jest już plikiem .zip , musi zostać uwzględniony w nowym .zip pliku. Przekazywanie pakietu jako .whl lub .zip pliku bezpośrednio nie jest obecnie obsługiwane.

Instrukcja ALTER EXTERNAL LIBRARY przekazuje tylko bity biblioteki do bazy danych. Zmodyfikowana biblioteka jest instalowana, gdy użytkownik uruchamia kod w sp_execute_external_script , który wywołuje bibliotekę.

Kilka pakietów, nazywanych pakietami systemowym, jest wstępnie zainstalowanych w wystąpieniu SQL. Nie można dodawać, aktualizować ani usuwać pakietów systemowych.

Permissions

Domyślnie użytkownik dbo lub dowolny członek roli db_owner ma uprawnienia do uruchamiania ALTER EXTERNAL LIBRARY. Ponadto użytkownik, który utworzył bibliotekę zewnętrzną, może zmienić bibliotekę zewnętrzną.

Przykłady

W poniższych przykładach zmieniono bibliotekę zewnętrzną o nazwie customPackage.

Zastępowanie zawartości biblioteki przy użyciu pliku

Poniższy przykład modyfikuje bibliotekę zewnętrzną o nazwie customPackage, używając spakowanego pliku zawierającego zaktualizowane bity.

ALTER EXTERNAL LIBRARY customPackage
    SET (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\customPackage.zip')
    WITH (LANGUAGE = 'R');

Aby zainstalować zaktualizowaną bibliotekę, wykonaj procedurę sp_execute_external_scriptskładowaną .

EXECUTE sp_execute_external_script
    @language = N'R',
    @script = N'library(customPackage)';

W przypadku języka Python przykład działa również przez zastąpienie ciągiem 'R''Python'.

Zmienianie istniejącej biblioteki przy użyciu strumienia bajtów

Poniższy przykład zmienia istniejącą bibliotekę, przekazując nowe bity jako literał szesnastkowy.

ALTER EXTERNAL LIBRARY customLibrary
SET (CONTENT = 0xABC123...) WITH (LANGUAGE = 'R');

W przypadku języka Python przykład działa również przez zastąpienie ciągiem 'R''Python'.

Uwaga / Notatka

Ten przykładowy kod demonstruje tylko składnię; wartość binarna w pliku CONTENT = jest obcięta pod kątem czytelności i nie tworzy działającej biblioteki. Rzeczywista zawartość zmiennej binarnej jest dłuższa.