Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2019 (15.x) und höhere Versionen
Registriert externe Spracherweiterungen aus dem angegebenen Dateipfad oder Bytedatenstrom in der Datenbank. Diese Anweisung ist ein generischer Mechanismus für den Datenbankadministrator, neue externe Spracherweiterungen auf jeder von SQL Server unterstützten Betriebssystemplattform zu registrieren. Weitere Informationen finden Sie unter Spracherweiterungen.
Hinweis
R und Python sind reservierte Namen. Du kannst keine externe Sprache mit genau diesen Namen erstellen. Weitere Informationen zur Verwendung von R und Python finden Sie unter SQL Server-Machine Learning-Services.
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'
Argumente
language_name
Sprachen sind datenbankbezogene Objekte. Sprachnamen müssen innerhalb der Datenbank eindeutig sein.
owner_name
Gibt den Namen eines Benutzers oder einer Rolle an, der oder die die externe Sprache besitzt. Wenn du keinen Wert angibst, wird der aktuelle Nutzer zum Eigentümer. Je nach Berechtigung benötigen andere Benutzer möglicherweise eine explizite Berechtigung, um Skripte in einer bestimmten Sprache auszuführen.
file_spec
Gibt den Inhalt der Spracherweiterung an. Für eine bestimmte Sprache pro Plattform ist nur eine <file_spec> erlaubt.
external_lang_specifier
Der vollständige Dateipfad zur .zip- oder tar.gz-Datei, die den Code der Erweiterung enthält. Dieser Inhalt kann entweder ein Pfad zu einer .zip-Datei (auf Windows) oder eine tar.gz-Datei (unter Linux) sein.
content_bits
Gibt ähnlich wie bei Assemblys den Inhalt der Sprache als Hexadezimalliteral an.
Nutze diese Option, wenn das Server-Dateisystem eingeschränkt ist und du die Bibliotheksdateien nicht an einen Ort kopieren kannst, auf den der Server Zugriff hat. Sie müssen die erforderlichen Berechtigungen besitzen, um die Sprache zu erstellen oder zu verändern.
external_lang_file_name
Der Name der DLL- oder SO-Datei der Erweiterung. Der Name kennzeichnet die korrekte Datei, wenn mehrere .dll- oder .so-Dateien in der <external_lang_specifier> .zip oder tar.gz existieren.
external_lang_parameters
Spezifiziert eine Reihe von Parametern, die an die externe Sprachlaufzeit übergeben werden sollen. Die externe Laufzeit erhält Parameterwerte, nachdem der externe Prozess gestartet ist. Umweltvariablen hingegen werden für die Spracherweiterung zugänglich, bevor der externe Prozess beginnt.
external_lang_env_variables
Spezifiziert eine Menge von Umweltvariablen, die der externen Sprachlaufzeit zur Verfügung gestellt werden sollen, bevor der externe Prozess startet. Setzen Sie zum Beispiel das Home-Verzeichnis der Laufzeit selbst, zum Beispiel .JRE_HOME
platform
Dieser Parameter ist für Szenarien mit hybridem Betriebssystem erforderlich. In einer hybriden Architektur muss man die Sprache einmal pro Plattform registrieren. Wenn du keine Plattform angibst, nimmt SQL Server das aktuelle Betriebssystem an.
Berechtigungen
Erfordert die CREATE EXTERNAL LANGUAGE-Berechtigung. Standardmäßig hat jedes Mitglied der db_owner festen Datenbankrolle Berechtigungen, eine externe Sprache zu erstellen. Für alle anderen Nutzer müssen Sie ausdrücklich die Erlaubnis erteilen, indem Sie eine GRANT Anweisung verwenden, die als Privileg angegeben CREATE EXTERNAL LANGUAGE ist.
Um eine Bibliothek zu ändern, benötigt man die separate Berechtigung, ALTER ANY EXTERNAL LANGUAGE.
EXECUTE EXTERNAL SCRIPT-Berechtigung
Verwenden Sie EXECUTE EXTERNAL SCRIPT Berechtigungen, um externe Skriptausführung in bestimmten Sprachen zu gewähren.
EXECUTE EXTERNAL SCRIPT unterscheidet sich von der EXECUTE ANY EXTERNAL SCRIPT Datenbankberechtigung, die keine Ausführungsberechtigung für eine bestimmte Sprache erlaubt.
Erteile Nicht-DBO-Nutzern die Erlaubnis, eine bestimmte Sprache auszuführen:
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::language_name
TO database_principal_name;
Verweisberechtigungen auf externe Bibliotheken
Ähnlich wie bei Assemblies benötigen externe Sprachen Referenzberechtigungen, damit eine Verbindung zwischen externen Bibliotheken und externen Sprachen besteht. Zum Beispiel musst du, bevor du eine externe Sprache verlegst, alle externen Bibliotheken entfernen, die darauf verweisen. Betrachten Sie die externe Sprache als ein höherstufiges Objekt als externe Bibliotheken in der Hierarchie.
Beispiele
A. Erstellen einer externen Sprache in einer Datenbank
Im folgenden Beispiel wird eine externe Sprache mit dem Namen Java einer Datenbank auf SQL Server unter Windows hinzugefügt.
CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll');
GO
B. Erstellen einer externen Sprache für Windows und Linux
Sie können <file_spec> maximal zweimal angeben, einmal für Windows und einmal für 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. Gewähren der Berechtigungen zum Ausführen von externen Skripts
Im folgenden Beispiel wird dem mylogin-Prinzipal der Zugriff zum Ausführen externer Skripts mithilfe der externen Sprache Java gewährt.
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::Java
TO mylogin;