CREATE EXTERNAL LANGUAGE (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümleri

Veritabanındaki dış dil uzantılarını belirtilen dosya yolundan veya bayt akışından kaydeder. Bu ifa, veritabanı yöneticisinin SQL Server'ın desteklediği herhangi bir işletim sistemi platformunda yeni dış dil uzantılarını kaydetmesi için genel bir mekanizmadır. Daha fazla bilgi için Dil Uzantıları bölümünü inceleyebilirsiniz.

Note

R ve Python ise ayrılmış isimlerdir. Bu özel isimlerle harici bir dil oluşturamazsınız. R ve Python kullanımı hakkında daha fazla bilgi için SQL Server Machine Learning Hizmetleri'ne bakınız.

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

Diller, veritabanı kapsamında nesnelerdir. Dil isimleri veritabanında benzersiz olmalıdır.

owner_name

Dış dili sahip olan kullanıcının veya rolün adını belirtir. Bir değer belirtmezseniz, mevcut kullanıcı sahibi olur. İzinlere bağlı olarak, diğer kullanıcılar belirli bir dil kullanarak script çalıştırmak için açık izne ihtiyaç duyabilir.

file_spec

Dil uzantısının içeriğini belirtir. Her platform için belirli bir dil için sadece bir tane <file_spec> izin verilir.

external_lang_specifier

Uzantının kodunu içeren .zip veya tar.gz dosyasına giden tam dosya yolu. Bu içerik ya .zip dosyasına giden yol (Windows'te) ya da tar.gz dosyasına (Linux'ta) yol olabilir.

content_bits

Dilin içeriğini, assemble'lere benzer şekilde, bir hex literal olarak belirtir.

Sunucu dosya sistemi kısıtlıyken ve kütüphane dosyalarını sunucunun erişebileceği bir konuma kopyalayamadığınızda bu seçeneği kullanın. Dili oluşturmak veya değiştirmek için gerekli izinlere sahip olmanız gerekir.

external_lang_file_name

Uzantı .dll veya .so dosyasının adı. İsim, .zip veya tar.gz'de birkaç .dll veya .so dosyası <external_lang_specifier> bulunduğunda doğru dosyayı belirler.

external_lang_parameters

Harici dil çalışma zamanına iletecek bir parametre kümesi belirtir. Harici çalışma zamanı, harici süreç başladıktan sonra parametre değerlerini alır. Buna karşılık, çevresel değişkenler dış süreç başlamadan önce dil uzantısına erişilebilir hale gelir.

external_lang_env_variables

Dış dil çalışma zamanına dış süreç başlamadan önce sunulacak bir dizi ortam değişkeni belirtir. Örneğin, çalışma zamanının ana dizinini ayarlayın, örneğin JRE_HOME.

peron

Bu parametre hibrit işletim sistemi senaryoları için gereklidir. Hibrit mimaride, her platform için dili bir kez kaydetmeniz gerekir. Bir platform belirtmezseniz, SQL Server mevcut işletim sistemini varsayıyor.

Permissions

CREATE EXTERNAL LANGUAGE izni gerektirir. Varsayılan olarak, db_owner sabit veritabanı rolünün herhangi bir üyesi harici bir dil oluşturma iznine sahiptir. Diğer tüm kullanıcılar için, ayrıcalık olarak belirten bir GRANT ifade CREATE EXTERNAL LANGUAGE kullanarak açıkça izin vermelisiniz.

Bir kütüphaneyi değiştirmek için ayrı bir izne ihtiyacınız var, ALTER ANY EXTERNAL LANGUAGE.

HARİŞ BETIK YÜRÜTME izni

Belirli dillerde harici script çalıştırma izinlerini kullanın EXECUTE EXTERNAL SCRIPT . EXECUTE EXTERNAL SCRIPT EXECUTE ANY EXTERNAL SCRIPT veritabanı izninden farklıdır; veritabanı belirli bir dilde yürütme izni verilmesine izin vermez.

Dbo dışı kullanıcıların belirli bir dili çalıştırma izni verin:

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

Dış kütüphanelere referans izinleri

Assemble'lara benzer şekilde, dış diller de dış kütüphaneler ile dış diller arasında bağlantı sağlamak için referans izinleri gerektirir. Örneğin, harici bir dili bırakmadan önce, ona referans veren tüm dış kütüphaneleri kaldırmalısınız. Dış dili, hiyerarşideki dış kütüphanelerden daha yüksek seviyeli bir nesne olarak görebilirsiniz.

Examples

A. Bir veritabanında harici bir dil oluşturun

Aşağıdaki örnek, Windows üzerinde SQL Server'da bir veritabanına Java adlı bir dış dil ekler.

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

B. Hem Windows hem de Linux için harici bir dil oluşturun

Biri Windows, biri Linux için olmak üzere en fazla iki <file_spec>tane belirtebilirsiniz.

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. Dış betik çalıştırmak için izin ver

Aşağıdaki örnek, mylogin başyapıtına betikleri Java dış diliyle çalıştırmak için erişim sağlar.

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