Sdílet prostřednictvím


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 SQL Serveru 2017 se podporuje jazyk R a platforma Windows. Jazyk R, Python a externí jazyky na platformách Windows a Linux jsou podporovány v SQL Serveru 2019 a novějším.

Poznámka:

Ve službě Azure SQL Managed Instance můžete knihovnu změnit tak, že ji odeberete a pak pomocí nástrojů sqlmlutils nainstalujete upravenou verzi. Další informace o nástrojích sqlmlutils najdete v tématu Instalace balíčků Pythonu pomocí nástrojů sqlmlutils a Instalace nových balíčků R pomocí sqlmlutils.

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 SQL Serveru 2017 je windows jedinou podporovanou platformou.

nástupiště

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 jsou podporované platformy Windows a Linux.

LANGUAGE = 'R'

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

Jazyk

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

Jazyk

Určuje jazyk balíčku. Hodnota může být R, Python nebo 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 se podporuje jenom platforma Windows.

V případě jazyka 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 .whl nebo .zip připravený ve formě komprimovaného archivního souboru. Pokud už balíček je soubor .zip, musí být součástí nového souboru .zip. Nahrání balíčku jako souboru .whl nebo .zip přímo není podporováno.

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 (Transact-SQL), který knihovnu volá.

Řada balíčků, které se označují jako systémové balíčky, jsou předinstalované v instanci SQL. Systémové balíčky nelze přidat, aktualizovat ani odebrat uživatelem.

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.

EXEC 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 byla CONTENT = zkrácena pro čitelnost a nevytvoří pracovní knihovnu. Skutečný obsah binární proměnné by byl mnohem delší.

Viz také

CREATE EXTERNAL LIBRARY (Transact-SQL)
DROP EXTERNAL LIBRARY (Transact-SQL)
sys.external_library_files
sys.external_libraries