ALTER EXTERNAL LIBRARY (Transact-SQL)

Platí pro: SQL Server 2017 (14.x) a novější verze Azure SQL Managed Instance

Upraví obsah existující externí knihovny balíčků.

Poznámka:

V SYSTÉMU SQL Server 2017 (14.x) se podporuje jazyk R a platforma Windows. R, Python a externí jazyky na platformách Windows a Linux jsou podporované v SQL Serveru 2019 (15.x) a novějších verzích.

Syntaxe pro 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>
}

Syntaxe pro 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
}

Syntaxe pro spravovanou instanci Azure SQL

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

Určuje název existující knihovny balíčků. Knihovny jsou omezené na uživatele. Názvy knihoven musí být jedinečné v kontextu konkrétního uživatele nebo vlastníka.

Název knihovny nelze libovolně přiřadit. To znamená, že musíte použít název, který volající modul runtime očekává při načtení balíčku.

OWNER_NAME

Určuje název uživatele nebo role, která vlastní externí knihovnu.

FILE_SPEC

Určuje obsah balíčku pro konkrétní platformu. Podporuje se pouze jeden artefakt souboru na platformu.

Soubor lze zadat ve formě místní cesty nebo síťové cesty. Pokud je zadána možnost zdroje dat, název souboru může být relativní cesta s ohledem na kontejner odkazovaný v objektu EXTERNAL DATA SOURCE.

Volitelně je možné zadat platformu operačního systému pro soubor. Pro každou platformu operačního systému pro konkrétní jazyk nebo modul runtime je povolen pouze jeden artefakt souboru nebo obsah.

LIBRARY_BITS

Určuje obsah balíčku jako šestnáctkový literál, podobně jako sestavení.

Tato možnost je užitečná, pokud máte požadovaná oprávnění ke změně knihovny, ale přístup k souborům na serveru je omezený a nemůžete obsah uložit do cesty, ke které má server přístup.

Místo toho můžete obsah balíčku předat jako proměnnou v binárním formátu.

PLATFORM = WINDOWS

Určuje platformu pro obsah knihovny. Tato hodnota se vyžaduje při úpravě existující knihovny pro přidání jiné platformy. V SYSTÉMU SQL Server 2017 (14.x) je windows jedinou podporovanou platformou.

PLATFORMA

Určuje platformu pro obsah knihovny. Tato hodnota se vyžaduje při úpravě existující knihovny pro přidání jiné platformy. V SQL Serveru 2019 (15.x) jsou podporované platformy Windows a Linux.

LANGUAGE = 'R'

Určuje jazyk balíčku. Jazyk R je podporován v SQL Serveru 2017 (14.x).

LANGUAGE

Určuje jazyk balíčku. Hodnota může být R nebo Python ve službě Azure SQL Managed Instance.

LANGUAGE

Určuje jazyk balíčku. Hodnota může být R, Pythonnebo název externího jazyka (viz CREATE EXTERNAL LANGUAGE).

Poznámky

Pro jazyk R musí být balíčky připravené ve formě komprimovaných archivních souborů s příponou .zip pro Windows. V SQL Serveru 2017 (14.x) se podporuje jenom platforma Windows.

Pro jazyk R musí být balíčky při použití souboru připravené ve formě komprimovaných archivních souborů s příponou .zip .

Pro jazyk Python musí být balíček v souboru nebo .zip souboru .whl připravený ve formě souboru komprimovaného archivu. Pokud už balíček je .zip soubor, musí být součástí nového .zip souboru. Nahrání balíčku jako .whl nebo .zip souboru přímo se v současné době nepodporuje.

Příkaz ALTER EXTERNAL LIBRARY nahraje do databáze jenom bity knihovny. Upravená knihovna se nainstaluje, když uživatel spustí kód v sp_execute_external_script , který knihovnu volá.

Několik balíčků, označovaných jako systémové balíčky, je předinstalováno v instanci SQL. Systémové balíčky nemůžete přidávat, aktualizovat ani odebírat.

Povolení

Ve výchozím nastavení má uživatel dbo nebo jakýkoli člen role db_owner oprávnění ke spuštění ALTER EXTERNAL LIBRARY. Kromě toho uživatel, který vytvořil externí knihovnu, může tuto externí knihovnu změnit.

Examples

Následující příklady mění externí knihovnu s názvem customPackage.

Nahrazení obsahu knihovny pomocí souboru

Následující příklad upraví externí knihovnu s názvem customPackage, pomocí zip souboru obsahujícího aktualizované bity.

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

Chcete-li nainstalovat aktualizovanou knihovnu, spusťte uloženou proceduru sp_execute_external_script.

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

V případě jazyka Python funguje příklad také nahrazením 'R' .'Python'

Změna existující knihovny pomocí bajtového streamu

Následující příklad změní existující knihovnu předáním nových bitů jako šestnáctkového literálu.

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

V případě jazyka Python funguje příklad také nahrazením 'R' .'Python'

Poznámka:

Tento vzorový kód demonstruje pouze syntaxi; binární hodnota je CONTENT = zkrácena pro čitelnost a nevytvoří pracovní knihovnu. Skutečný obsah binární proměnné je delší.