Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2019 (15.x) en latere versies
Registreert externe taalextensies in de database vanaf het opgegeven bestandspad of bytestroom. Deze verklaring is een generiek mechanisme voor de databasebeheerder om nieuwe externe taalextensies te registreren op elk OS-platform dat SQL Server ondersteunt. Voor meer informatie, zie Language Extensions.
Opmerking
R en Python zijn gereserveerde namen. Je kunt geen externe taal maken met die specifieke namen. Voor meer informatie over het gebruik van R en Python, zie 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'
Arguments
language_name
Talen zijn database-scoped objecten. Taalnamen moeten uniek zijn binnen de database.
owner_name
Specificeert de naam van de gebruiker of rol die eigenaar is van de externe taal. Als je geen waarde specificeert, wordt de huidige gebruiker de eigenaar. Afhankelijk van de rechten kunnen andere gebruikers expliciete toestemming nodig hebben om scripts uit te voeren in een specifieke taal.
file_spec
Specificeert de inhoud van de taalextensie. Er is er maar één <file_spec> toegestaan voor een specifieke taal, per platform.
external_lang_specifier
Het volledige bestandspad naar het .zip of tar.gz bestand dat de code van de extensie bevat. Deze inhoud kan een pad zijn naar een .zip-bestand (op Windows) of een tar.gz-bestand (op Linux).
content_bits
Specificeert de inhoud van de taal als een hex-literaal, vergelijkbaar met assemblies.
Gebruik deze optie wanneer het serverbestandssysteem beperkt is en je de bibliotheekbestanden niet kunt kopiëren naar een locatie waar de server toegang toe heeft. Je moet de vereiste rechten hebben om de taal te maken of te wijzigen.
external_lang_file_name
Naam van de extensie .dll of .so bestand. De naam identificeert het juiste bestand wanneer er meerdere .dll- of .so-bestanden in de <external_lang_specifier> .zip of tar.gz bestaan.
external_lang_parameters
Specificeert een set parameters die aan de externe programmeerruntime moeten worden doorgegeven. De externe runtime ontvangt parameterwaarden nadat het externe proces is gestart. Omgevingsvariabelen daarentegen worden toegankelijk voor de taaluitbreiding voordat het externe proces begint.
external_lang_env_variables
Specificeert een set omgevingsvariabelen die beschikbaar moeten worden gesteld aan de externe taal runtime voordat het externe proces start. Stel bijvoorbeeld de thuismap van de runtime zelf in, zoals JRE_HOME.
perron
Deze parameter is nodig voor hybride OS-scenario's. In een hybride architectuur moet je de taal eenmaal per platform registreren. Als je geen platform specificeert, gaat SQL Server ervan uit dat het huidige besturingssysteem is.
Permissions
Hiervoor is de machtiging CREATE EXTERNAL LANGUAGE vereist. Standaard heeft elk lid van de db_owner vaste databaserol rechten om een externe taal te maken. Voor alle andere gebruikers moet je expliciet toestemming geven door een GRANT verklaring te gebruiken, waarbij je het privilege specificeert CREATE EXTERNAL LANGUAGE .
Om een bibliotheek te wijzigen, heb je de aparte toestemming nodig, ALTER ANY EXTERNAL LANGUAGE.
EXECUTE EXTERNAL SCRIPT toestemming
Gebruik EXECUTE EXTERNAL SCRIPT permissies om externe scriptuitvoering op specifieke talen toe te staan.
EXECUTE EXTERNAL SCRIPT verschilt van de EXECUTE ANY EXTERNAL SCRIPT databaserecht, die het verlenen van uitvoeringsrechten niet toestaat op een specifieke taal.
Geef niet-DBO-gebruikers toestemming om een specifieke taal uit te voeren:
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::language_name
TO database_principal_name;
Referentierechten naar externe bibliotheken
Net als bij assemblies vereisen externe talen referentierechten zodat er een verbinding is tussen externe bibliotheken en externe talen. Voordat je bijvoorbeeld een externe taal uitschakelt, moet je alle externe bibliotheken die ernaar verwijzen verwijderen. Bekijk de externe taal als een hoger niveau object dan externe bibliotheken in de hiërarchie.
Voorbeelden
Eén. Maak een externe taal aan in een database
In het volgende voorbeeld wordt een externe taal met de naam Java toegevoegd aan een database op SQL Server in Windows.
CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll');
GO
B. Maak een externe taal aan voor zowel Windows als Linux
U kunt maximaal twee <file_spec>opgeven, één voor Windows en één voor 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. Verleen permissies om extern script uit te voeren
Het volgende voorbeeld geeft de mylogin principal toegang om scripts uit te voeren met de externe Java-taal.
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::Java
TO mylogin;