CREATE EXTERNAL LANGUAGE (Transact-SQL)

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók

Regisztrálja a külső nyelvi kiterjesztéseket az adatbázisban a megadott fájlútból vagy bájtfolyamból. Ez az állítás egy általános mechanizmus az adatbázis-adminisztrátor számára, hogy bármely operációs rendszer platformon regisztráljon új külső nyelvi bővítményeket, amelyet az SQL Server támogat. További információért lásd: Nyelvkiterjesztések.

Megjegyzés:

Az R és a Python fenntartott nevek. Ezekkel a konkrét nevekkel nem lehet külső nyelvet létrehozni. További információért az R és Python használatáról a SQL Server Machine Learning szolgáltatások oldalán található.

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

A nyelvek adatbázis-alapú objektumok. A nyelvneveknek egyedinek kell lenniük az adatbázisban.

owner_name

Megadja a külső nyelv tulajdonosának vagy felhasználójának vagy szerepének nevét. Ha nem határozsz meg értéket, a jelenlegi felhasználó lesz a tulajdonos. A jogosultságoktól függően más felhasználóknak explicit engedélyre lehet szükségük a szkriptek végrehajtásához egy adott nyelven.

file_spec

Megadja a nyelvkiterjesztés tartalmát. Egy adott nyelvhez csak egy <file_spec> engedélyezett platformonként.

external_lang_specifier

A teljes fájlút a .zip vagy tar.gz fájlhoz, amely tartalmazza a kiterjesztés kódját. Ez a tartalom lehet egy .zip fájlhoz vezető út (Windows-en), vagy egy tar.gz fájlhoz (Linuxon).

content_bits

A nyelv tartalmát hatszög literálisként határozza meg, hasonlóan az összeállításokhoz.

Használd ezt az opciót, amikor a szerver fájlrendszere korlátozott, és nem tudod a könyvtárfájlokat olyan helyre másolni, amelyhez a szerver hozzáférhet. Rendelkeznie kell a szükséges jogosultságokkal a nyelv létrehozásához vagy módosításához.

external_lang_file_name

A .dll vagy .so fájl kiterjesztésének neve. A név azonosítja a helyes fájlt, ha több .dll vagy .so fájl található a <external_lang_specifier> .zip vagy tar.gz között.

external_lang_parameters

Megad egy paraméterkészletet, amelyet a külső nyelvi futásidőhöz lehet továbbítani. A külső futás paraméterértékeket kap a külső folyamat kezdete után. Ezzel szemben a környezeti változók a nyelvkiterjesztés számára elérhetővé válnak, mielőtt a külső folyamat elkezdődik.

external_lang_env_variables

Megad egy környezeti változókészletet, amelyet a külső nyelvi futás előtt elérhetővé kell tenni a külső folyamat előtt. Például állítsuk be a futás vezető könyvtárát, például JRE_HOME.

peron

Ez a paraméter hibrid operációs rendszer forgatókönyvekhez szükséges. Hibrid architektúrában platformonként egyszer kell regisztrálni a nyelvet. Ha nem jelölsz meg platformot, az SQL Server a jelenlegi operációs rendszert feltételezi.

Permissions

A CREATE EXTERNAL LANGUAGE engedélyre van szükség. Alapértelmezés szerint a db_owner fix adatbázis szerepének bármely tagja jogosult külső nyelv létrehozására. Minden más felhasználó esetében kifejezetten engedélyt kell megadni egy GRANT nyilatkozattal, amely CREATE EXTERNAL LANGUAGE megadja a jogosultságot.

Egy könyvtár módosításához külön engedélyre van szükség, ALTER ANY EXTERNAL LANGUAGE.

EXECUTE EXTERNAL SCRIPT engedély

Használj EXECUTE EXTERNAL SCRIPT engedélyeket külső szkriptvégrehajtás engedélyezésére adott nyelveken. EXECUTE EXTERNAL SCRIPT eltér az EXECUTE ANY EXTERNAL SCRIPT adatbázis engedélytől, amely nem engedélyezi a végrehajtási engedélyt egy adott nyelven.

Engedélyt adjon nem dbo felhasználóknak egy adott nyelv végrehajtására:

GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::language_name
TO database_principal_name;

Hivatkozási engedélyek külső könyvtárakhoz

Az összeállításokhoz hasonlóan a külső nyelvek hivatkozási jogosultságot igényelnek, hogy kapcsolat legyen a külső könyvtárak és a külső nyelvek között. Például, mielőtt egy külső nyelvet elhagynánk, el kell hagynod az összes külső könyvtárat, amely arra hivatkozik. Tekintsd a külső nyelvet magasabb szintű objektumként, mint a külső könyvtárakat a hierarchiában.

Examples

A. Hozzon létre egy külső nyelvet egy adatbázisban

Az alábbi példa egy Java nevű külső nyelvet ad hozzá egy windowsos SQL Serveren futó adatbázishoz.

CREATE EXTERNAL LANGUAGE Java 
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll');
GO

B. Készíts külső nyelvet mind a Windows-hoz, mind a Linuxhoz

Legfeljebb két <file_spec>, egy Windows és egy Linux rendszerhez használható lehetőséget adhat meg.

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. Külső szkript futtatásának engedélye

A következő példa lehetővé teszi a mylogin fő számára, hogy a Java külső nyelven futtathasson szkripteket.

GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::Java 
TO mylogin;