Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2017 (14.x) a novější verze
Azure SQL Managed Instance
Nahraje soubory balíčků jazyka R, Python nebo Java do databáze ze zadaného datového proudu bajtů nebo cesty k souboru. Tento příkaz slouží jako obecný mechanismus pro správce databáze k nahrání artefaktů potřebných pro všechny nové moduly runtime externího jazyka a platformy operačního systému podporované SQL Serverem.
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.
Nahraje soubory balíčků R nebo Pythonu do databáze ze zadaného datového proudu bajtů nebo cesty k souboru. Tento příkaz slouží jako obecný mechanismus pro správce databáze k nahrání potřebných artefaktů.
Poznámka:
Ve službě Azure SQL Managed Instance můžete k instalaci knihovny použít nástroje sqlmlutils . Podrobnosti 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
CREATE EXTERNAL LIBRARY library_name
[ AUTHORIZATION owner_name ]
FROM <file_spec> [ ,...2 ]
WITH ( LANGUAGE = <language> )
[ ; ]
<file_spec> ::=
{
(CONTENT = { <client_library_specifier> | <library_bits> }
[, PLATFORM = <platform> ])
}
<client_library_specifier> :: =
{
'[file_path\]manifest_file_name'
}
<library_bits> :: =
{
varbinary_literal
| varbinary_expression
}
<platform> :: =
{
WINDOWS
| LINUX
}
<language> :: =
{
'R'
| 'Python'
| <external_language>
}
Syntaxe pro SQL Server 2017
CREATE EXTERNAL LIBRARY library_name
[ AUTHORIZATION owner_name ]
FROM <file_spec> [ ,...2 ]
WITH ( LANGUAGE = 'R' )
[ ; ]
<file_spec> ::=
{
(CONTENT = { <client_library_specifier> | <library_bits> })
}
<client_library_specifier> :: =
{
'[file_path\]manifest_file_name'
}
<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
Knihovny nahrané do instance můžou být veřejné nebo soukromé. Pokud je knihovna vytvořená členem dbo, je knihovna veřejná a může být sdílena se všemi uživateli. V opačném případě je knihovna pro daného uživatele soukromá.
Názvy knihoven musí být jedinečné v kontextu konkrétního uživatele nebo vlastníka. Například dva uživatelé RUser1 a RUser2 mohou jednotlivě i samostatně nahrát knihovnu ggplot2R . Pokud však RUser1 chtěl nahrát novější verzi ggplot2, druhá instance musí být pojmenována jinak nebo musí nahradit existující knihovnu.
Názvy knihoven nelze libovolně přiřadit; název knihovny by měl být stejný jako název potřebný k načtení knihovny v externím skriptu.
owner_name
Určuje název uživatele nebo role, která vlastní externí knihovnu. Pokud není zadáno, je vlastnictví uděleno aktuálnímu uživateli.
Knihovny vlastněné vlastníkem databáze se považují za globální pro databázi a modul runtime. Jinými slovy, vlastníci databází můžou vytvářet knihovny, které obsahují společnou sadu knihoven nebo balíčků, které sdílí mnoho uživatelů. Pokud externí knihovnu vytvoří jiný uživatel než dbo uživatel, externí knihovna je pro daného uživatele soukromá.
Když uživatel RUser1 spustí externí skript, může hodnota libPath obsahovat více cest. První cesta je vždy cesta ke sdílené knihovně vytvořené vlastníkem databáze. Druhá část libPath určuje cestu obsahující balíčky nahrané jednotlivě uživatelem RUser1.
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.
Při pokusu o přístup k souboru zadanému v <client_library_specifier> zosobní SQL Server kontext zabezpečení aktuálního přihlášení systému Windows. Pokud <client_library_specifier> určuje síťové umístění (cesta UNC), zosobnění aktuálního přihlášení se nepřenese do síťového umístění kvůli omezením delegování. V tomto případě se přístup provádí pomocí kontextu zabezpečení účtu služby SQL Serveru. Další informace najdete v tématu
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 potřebujete vytvořit knihovnu nebo změnit existující knihovnu (a mít k tomu požadovaná oprávnění), ale systém souborů na serveru je omezený a soubory knihovny nemůžete kopírovat do umístění, ke kterému má server přístup.
NÁSTUPIŠTĚ
Určuje platformu pro obsah knihovny. Výchozí hodnota je hostitelská platforma, na které běží SQL Server. Proto uživatel nemusí zadávat hodnotu. Vyžaduje se v případě, že se podporuje více platforem nebo uživatel musí zadat jinou platformu. 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, Pythonnebo název externího jazyka (viz CREATE EXTERNAL LANGUAGE).
Poznámky
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 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 CREATE EXTERNAL LIBRARY nahraje do databáze bity knihovny. Knihovna se nainstaluje, když uživatel spustí externí skript pomocí sp_execute_external_script a zavolá balíček nebo knihovnu.
Knihovny nahrané do instance můžou být veřejné nebo soukromé. Pokud je knihovna vytvořená členem dbo, je knihovna veřejná a může být sdílena se všemi uživateli. V opačném případě je knihovna pro daného uživatele soukromá.
Ř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í
CREATE EXTERNAL LIBRARY Vyžaduje oprávnění. Ve výchozím nastavení má každý uživatel, který je členem role db_owner , oprávnění k vytvoření externí knihovny. Pro všechny ostatní uživatele musíte explicitně udělit oprávnění pomocí příkazu GRANT , který jako oprávnění určuje CREATE EXTERNAL LIBRARY.
V SQL Serveru 2019 kromě oprávnění CREATE EXTERNAL LIBRARY potřebuje uživatel také odkazy na externí jazyk, aby mohl vytvořit externí knihovny pro tento externí jazyk.
GRANT REFERENCES ON EXTERNAL LANGUAGE::Java to user
GRANT CREATE EXTERNAL LIBRARY to user
Chcete-li upravit libovolnou knihovnu, vyžaduje samostatné oprávnění. ALTER ANY EXTERNAL LIBRARY
Pokud chcete vytvořit externí knihovnu pomocí cesty k souboru, musí být uživatel ověřeným přihlášením systému Windows nebo členem pevné role serveru správce systému.
Examples
Přidání externí knihovny do databáze
Následující příklad přidá externí knihovnu volanou customPackage do databáze.
CREATE EXTERNAL LIBRARY customPackage
FROM (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\customPackage.zip') WITH (LANGUAGE = 'R');
Po úspěšném nahrání knihovny do instance provede uživatel sp_execute_external_script proceduru a nainstaluje knihovnu.
EXEC sp_execute_external_script
@language =N'R',
@script=N'library(customPackage)'
V případě jazyka Python v SQL Serveru 2019 funguje příklad také nahrazením 'R' .'Python'
Instalace balíčků se závislostmi
Pokud má balíček, který chcete nainstalovat, nějaké závislosti, je důležité, abyste analyzovali závislosti na první i druhé úrovni a před pokusem o instalaci cílového balíčku se ujistěte, že jsou k dispozici všechny požadované balíčky.
Předpokládejme například, že chcete nainstalovat nový balíček: packageA
-
packageAmá závislost napackageB -
packageBmá závislost napackageC
Chcete-li uspět při instalaci packageA, musíte vytvořit knihovny pro packageB a packageC současně přidat packageA do SQL Serveru. Nezapomeňte také zkontrolovat požadované verze balíčků.
V praxi jsou závislosti balíčků pro oblíbené balíčky obvykle mnohem složitější než tento jednoduchý příklad. Ggplot2 může například vyžadovat více než 30 balíčků a tyto balíčky mohou vyžadovat další balíčky, které nejsou na serveru k dispozici. Jakákoli chybějící nebo nesprávná verze balíčku může způsobit selhání instalace.
Vzhledem k tomu, že může být obtížné určit všechny závislosti jen z pohledu manifestu balíčku, doporučujeme použít balíček, jako je miniCRAN , identifikovat všechny balíčky, které mohou být nutné k úspěšnému dokončení instalace.
Nahrajte cílový balíček a jeho závislosti. Všechny soubory musí být ve složce, která je přístupná k serveru.
CREATE EXTERNAL LIBRARY packageA FROM (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\packageA.zip') WITH (LANGUAGE = 'R'); GO CREATE EXTERNAL LIBRARY packageB FROM (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\packageB.zip') WITH (LANGUAGE = 'R'); GO CREATE EXTERNAL LIBRARY packageC FROM (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\packageC.zip') WITH (LANGUAGE = 'R'); GONejprve nainstalujte požadované balíčky.
Pokud už byl do instance nahraný požadovaný balíček, nemusíte ho znovu přidat. Nezapomeňte zkontrolovat, jestli je stávající balíček správnou verzí.
Požadované balíčky a jsou nainstalovány
packageCve správném pořadí přisp_execute_external_scriptprvním spuštění pro instalaci balíčkupackageA.packageBPokud však není k dispozici žádný požadovaný balíček, instalace cílového balíčku
packageAselže.EXEC sp_execute_external_script @language =N'R', @script=N' # load the desired package packageA library(packageA) '
V případě jazyka Python v SQL Serveru 2019 funguje příklad také nahrazením 'R' .'Python'
Vytvoření knihovny z bajtového streamu
Pokud nemáte možnost ukládat soubory balíčku do umístění na serveru, můžete obsah balíčku předat do proměnné. Následující příklad vytvoří knihovnu předáním bitů jako šestnáctkového literálu.
CREATE EXTERNAL LIBRARY customLibrary FROM (CONTENT = 0xABC123...) WITH (LANGUAGE = 'R');
V případě jazyka Python v SQL Serveru 2019 funguje příklad také nahrazením jazyka R za 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ší.
Změna existující knihovny balíčků
Příkaz ALTER EXTERNAL LIBRARY DDL lze použít k přidání nového obsahu knihovny nebo úpravě existujícího obsahu knihovny. Chcete-li upravit existující knihovnu, vyžaduje oprávnění ALTER ANY EXTERNAL LIBRARY .
Další informace naleznete v tématu ALTER EXTERNAL LIBRARY.
Přidání souboru java .jar do databáze
Následující příklad přidá externí soubor JAR volaný customJar do databáze.
CREATE EXTERNAL LIBRARY customJar
FROM (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\customJar.jar')
WITH (LANGUAGE = 'Java');
Po úspěšném nahrání knihovny do instance provede uživatel sp_execute_external_script proceduru a nainstaluje knihovnu.
EXEC sp_execute_external_script
@language = N'Java'
, @script = N'customJar.MyCLass.myMethod'
, @input_data_1 = N'SELECT * FROM dbo.MyTable'
WITH RESULT SETS ((column1 int))
Přidání externího balíčku pro Windows i Linux
Můžete zadat až dvě <file_spec>– jednu pro Windows a jednu pro Linux.
CREATE EXTERNAL LIBRARY lazyeval
FROM (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\packageA.zip', PLATFORM = WINDOWS),
(CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\packageA.tar.gz', PLATFORM = LINUX)
WITH (LANGUAGE = 'R')
Pokud balíček nainstalujete sp_execute_external_script v závislosti na platformě, na které je instance SQL Serveru spuštěná, použije se obsah knihovny pro danou platformu.
EXECUTE sp_execute_external_script
@LANGUAGE = N'R',
@SCRIPT = N'
library(packageA)'
Viz také
ALTER EXTERNAL LIBRARY (Transact-SQL)
DROP EXTERNAL LIBRARY (Transact-SQL)
sys.external_library_files
sys.external_libraries