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 2019 (15.x) a novější verze
Registruje externí jazykové přípony v databázi z určené cesty k souboru nebo bajtového proudu. Toto tvrzení je obecným mechanismem, kterým správce databáze registruje nová rozšíření externího jazyka na jakékoli platformě operačního systému, kterou SQL Server podporuje. Pro více informací viz Jazyková rozšíření.
Note
R a Python jsou vyhrazená jména. Nemůžeš vytvořit externí jazyk s těmito konkrétními názvy. Pro více informací o používání R a Python viz SQL Server Machine Learning Služby.
Syntax
CREATE EXTERNAL LANGUAGE language_name
[ AUTHORIZATION owner_name ]
FROM <file_spec> [ ,...2 ]
[ ; ]
<file_spec> ::=
{
( CONTENT = { <external_lang_specifier> | <content_bits> },
FILE_NAME = <external_lang_file_name>
[ , PLATFORM = <platform> ]
[ , PARAMETERS = <external_lang_parameters> ]
[ , ENVIRONMENT_VARIABLES = <external_lang_env_variables> ] )
}
<external_lang_specifier> :: =
{
'[file_path\]os_file_name'
}
<content_bits> :: =
{
varbinary_literal
| varbinary_expression
}
<external_lang_file_name> :: =
'extension_file_name'
<platform> :: =
{
WINDOWS
| LINUX
}
<external_lang_parameters> :: =
'extension_specific_parameters'
Arguments
language_name
Jazyky jsou objekty zaměřené na databázi. Názvy jazyků musí být v databázi jedinečné.
owner_name
Specifikuje jméno uživatele nebo role, která vlastní externí jazyk. Pokud nespecifikujete hodnotu, vlastníkem se stane současný uživatel. V závislosti na oprávněních mohou ostatní uživatelé potřebovat explicitní povolení ke spuštění skriptů v konkrétním jazyce.
file_spec
Specifikuje obsah jazykového rozšíření. Pouze jeden je <file_spec> povolen pro konkrétní jazyk na platformu.
external_lang_specifier
Plná cesta k souboru .zip nebo tar.gz, který obsahuje kód přípony. Tento obsah může být buď cestou k .zip souboru (na Windows), nebo tar.gz souboru (na Linuxu).
content_bits
Specifikuje obsah jazyka jako hex literál, podobně jako assemblies.
Použijte tuto možnost, když je souborový systém serveru omezený a nemůžete zkopírovat knihovní soubory na místo, ke kterému má server přístup. Musíte mít potřebná oprávnění k vytvoření nebo změně jazyka.
external_lang_file_name
Název přípony .dll nebo .so souboru. Název identifikuje správný soubor, když v .zip nebo tar.gz existuje několik .dll nebo .so souborů <external_lang_specifier> .
external_lang_parameters
Specifikuje sadu parametrů, které se předají do runtime externího jazyka. Externí runtime přijímá hodnoty parametrů po spuštění externího procesu. Naopak proměnné prostředí se stávají přístupnými rozšíření jazyka ještě před zahájením externího procesu.
external_lang_env_variables
Specifikuje sadu proměnných prostředí, které jsou k dispozici pro runtime externího jazyka před zahájením externího procesu. Například nastavte domovský adresář samotného runtime, například JRE_HOME.
nástupiště
Tento parametr je potřeba pro hybridní operační systémy. V hybridní architektuře musíte jazyk zaregistrovat jednou na platformu. Pokud nespecifikujete platformu, SQL Server předpokládá aktuální operační systém.
Permissions
Vyžaduje oprávnění CREATE EXTERNAL LANGUAGE. Ve výchozím nastavení má každý člen db_owner pevné databázové role oprávnění vytvářet externí jazyk. Pro všechny ostatní uživatele musíte výslovně udělit oprávnění pomocí příkazu GRANT , který uvede CREATE EXTERNAL LANGUAGE jako toto oprávnění.
Pro úpravu knihovny potřebujete samostatné oprávnění, ALTER ANY EXTERNAL LANGUAGE.
POVOLENÍ SPUSTIT EXTERNÍ SKRIPT
Použijte EXECUTE EXTERNAL SCRIPT oprávnění k udělení externího spuštění skriptů na specifických jazycích.
EXECUTE EXTERNAL SCRIPT liší se od databázového oprávnění EXECUTE ANY EXTERNAL SCRIPT , které neumožňuje udělit povolení k vykonání v konkrétním jazyce.
Udělit uživatelům mimo DBO povolení spustit konkrétní jazyk:
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::language_name
TO database_principal_name;
Referenční oprávnění k externím knihovnám
Podobně jako assemblery, externí jazyky vyžadují referenční oprávnění, aby existovalo propojení mezi externími knihovnami a externími jazyky. Například před vypuštěním externího jazyka musíte odstranit všechny externí knihovny, které na něj odkazují. Vnímajte externí jazyk jako objekt vyšší úrovně než externí knihovny v hierarchii.
Examples
A. Vytvořte externí jazyk v databázi
Následující příklad přidá externí jazyk s názvem Java do databáze na SQL Serveru ve Windows.
CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll');
GO
B. Vytvořte externí jazyk pro Windows i Linux
Můžete zadat až dvě <file_spec>– jednu pro Windows a jednu pro Linux.
CREATE EXTERNAL LANGUAGE Java
FROM
(CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll', PLATFORM = WINDOWS),
(CONTENT = N'<path-to-tar.gz>', FILE_NAME = 'javaextension.so', PLATFORM = LINUX);
GO
C. Udělení oprávnění k provádění externích skriptů
Následující příklad dává principálu mylogin přístup k provádění skriptů pomocí externího jazyka Java.
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::Java
TO mylogin;