CREATE EXTERNAL LANGUAGE (Transact-SQL)

Dotyczy: SQL Server 2019 (15.x) i nowsze wersje

Rejestruje rozszerzenia języka zewnętrznego w bazie danych z określonej ścieżki pliku lub strumienia bajtów. To stwierdzenie jest ogólnym mechanizmem dla administratora bazy danych rejestrującego nowe zewnętrzne rozszerzenia językowe na dowolnej platformie operacyjnej obsługiwanej przez SQL Server. Więcej informacji można znaleźć w sekcji Rozszerzenia języka.

Note

R i Python to nazwy zarezerwowane. Nie możesz stworzyć języka zewnętrznego z tymi konkretnymi nazwami. Więcej informacji o tym, jak korzystać z R i Python, można znaleźć w sekcji SQL Server Machine Learning Services.

Składnia

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

Języki są obiektami o skali bazy danych. Nazwy języków muszą być unikalne w bazie danych.

owner_name

Określa nazwę użytkownika lub rolę, która jest właścicielem języka zewnętrznego. Jeśli nie określisz wartości, obecny użytkownik staje się właścicielem. W zależności od uprawnień, inni użytkownicy mogą potrzebować wyraźnych uprawnień do wykonywania skryptów w określonym języku.

file_spec

Określa zawartość rozszerzenia języka. Dozwolony jest tylko jeden <file_spec> dla konkretnego języka, na każdej platformie.

external_lang_specifier

Pełna ścieżka pliku do pliku .zip lub tar.gz, który zawiera kod rozszerzenia. Ta treść może być ścieżką do pliku .zip (na Windows) lub plikiem tar.gz (na Linuksie).

content_bits

Określa zawartość języka jako literal heksiędelny, podobnie jak assemblies.

Użyj tej opcji, gdy system plików serwera jest ograniczony i nie możesz skopiować plików biblioteki do miejsca, do którego serwer ma dostęp. Musisz mieć wymagane uprawnienia do tworzenia lub zmiany języka.

external_lang_file_name

Nazwa rozszerzenia .dll pliku .so. Nazwa wskazuje właściwy plik, gdy w .zip lub tar.gz istnieje kilka plików <external_lang_specifier> .dll lub .so.

external_lang_parameters

Określa zestaw parametrów, które należy przekazać do zewnętrznego środowiska wykonawczego języka. Zewnętrzne środowisko wykonawcze otrzymuje wartości parametrów po rozpoczęciu procesu zewnętrznego. Zmienne środowiskowe, w przeciwieństwie do tego, stają się dostępne dla rozszerzenia języka zanim proces zewnętrzny się rozpocznie.

external_lang_env_variables

Określa zestaw zmiennych środowiskowych, które mają być dostępne dla środowiska wykonawczego języka zewnętrznego przed rozpoczęciem procesu zewnętrznego. Na przykład ustaw katalog domowy samego środowiska wykonawczego, na przykład .JRE_HOME

podest

Ten parametr jest potrzebny w scenariuszach hybrydowych systemów operacyjnych. W architekturze hybrydowej musisz zarejestrować język raz na platformę. Jeśli nie określisz platformy, SQL Server zakłada aktualny system operacyjny.

Permissions

Wymaga uprawnienia CREATE EXTERNAL LANGUAGE. Domyślnie każdy członek db_owner stałej roli bazy danych ma uprawnienia do tworzenia języka zewnętrznego. Dla wszystkich pozostałych użytkowników musisz wyraźnie przyznać uprawnienia, używając GRANT instrukcji określającej CREATE EXTERNAL LANGUAGE jako uprawnienie.

Aby modyfikować bibliotekę, potrzebujesz osobnych uprawnień, ALTER ANY EXTERNAL LANGUAGE.

UPRAWNIENIA DO WYKONANIA ZEWNĘTRZNEGO SKRYPTU

Używaj EXECUTE EXTERNAL SCRIPT uprawnień, aby przyznać zewnętrzne wykonywanie skryptów w określonych językach. EXECUTE EXTERNAL SCRIPT różni się od uprawnień do bazy EXECUTE ANY EXTERNAL SCRIPT danych, które nie pozwalają na przyznanie zezwoleń na wykonywanie w konkretnym języku.

Udziel użytkownikom niebędącym DBO uprawnienia do wykonywania określonego języka:

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

Odwołania uprawnień do zewnętrznych bibliotek

Podobnie jak asemble, języki zewnętrzne wymagają uprawnień do odwoływania, aby istniał związek między bibliotekami zewnętrznymi a językami zewnętrznymi. Na przykład, zanim odrzucisz język zewnętrzny, musisz usunąć wszystkie zewnętrzne biblioteki, które się do niego odwołują. Traktuj język zewnętrzny jako obiekt wyższego poziomu niż zewnętrzne biblioteki w hierarchii.

Examples

A. Utworzenie języka zewnętrznego w bazie danych

Poniższy przykład dodaje język zewnętrzny o nazwie Java do bazy danych w programie SQL Server w systemie Windows.

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

B. Stwórz język zewnętrzny zarówno dla Windows, jak i Linux

Można określić maksymalnie dwa <file_spec>, jeden dla systemu Windows i jeden dla systemu 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. Przyznanie uprawnień do wykonywania zewnętrznego skryptu

Poniższy przykład daje principalowi mylogin dostęp do wykonywania skryptów w języku zewnętrznym Java.

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