Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: SQL Server 2019 (15.x) e versioni successive
Registra estensioni di linguaggio esterno nel database partendo dal percorso file specificato o dal flusso di byte. Questa affermazione è un meccanismo generico per l'amministratore del database di registrare nuove estensioni linguistiche esterne su qualsiasi piattaforma OS supportata da SQL Server. Per altre informazioni, vedere Estensioni del linguaggio.
Nota
R e Python sono nomi riservati. Non puoi creare un linguaggio esterno con quei nomi specifici. Per altre informazioni su come usare R e Python, vedere SQL Server Machine Learning Services.
Sintassi
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'
Argomenti
language_name
I linguaggi sono oggetti con ambito di database. I nomi dei linguaggi devono essere univoci all'interno del database.
owner_name
Specifica il nome dell'utente o del ruolo che è proprietario del linguaggio esterno. Se non specifichi un valore, l'utente attuale diventa il proprietario. A seconda dei permessi, altri utenti potrebbero aver bisogno di permessi espliciti per eseguire script usando un linguaggio specifico.
file_spec
Specifica il contenuto dell'estensione del linguaggio. È consentito solo uno <file_spec> per una specifica lingua, per piattaforma.
external_lang_specifier
Il percorso completo del file verso il file .zip o tar.gz che contiene il codice dell'estensione. Questo contenuto può essere sia un percorso verso un file .zip (su Windows) sia un file tar.gz (su Linux).
content_bits
Specifica il contenuto del linguaggio come valore letterale esadecimale, analogamente agli assembly.
Usa questa opzione quando il file system del server è limitato e non puoi copiare i file della libreria in una posizione accessibile al server. Devi avere i permessi necessari per creare o modificare la lingua.
external_lang_file_name
Nome del file con estensione dll o so. Il nome identifica il file corretto quando esistono diversi file .dll o .so nel <external_lang_specifier> .zip o tar.gz.
external_lang_parameters
Specifica un insieme di parametri da passare al runtime del linguaggio esterno. Il runtime esterno riceve i valori dei parametri dopo l'inizio del processo esterno. Le variabili ambientali, al contrario, diventano accessibili all'estensione linguistica prima che inizi il processo esterno.
external_lang_env_variables
Specifica un insieme di variabili di ambiente da rendere disponibili al runtime del linguaggio esterno prima che il processo esterno inizi. Ad esempio, imposta la cartella home del runtime stesso, come JRE_HOME.
platform
Questo parametro è necessario per gli scenari ibridi del sistema operativo. In un'architettura ibrida, devi registrare il linguaggio una volta per piattaforma. Se non specifichi una piattaforma, SQL Server assume il sistema operativo attuale.
Autorizzazioni
È necessaria l'autorizzazione CREATE EXTERNAL LANGUAGE. Di default, ogni membro del ruolo db_owner database fisso ha i permessi di creare un linguaggio esterno. Per tutti gli altri utenti, devi esplicitamente concedere il permesso usando un'istruzione GRANT , specificando CREATE EXTERNAL LANGUAGE come privilegio.
Per modificare una libreria, è necessario il permesso separato, ALTER ANY EXTERNAL LANGUAGE.
Autorizzazione EXECUTE EXTERNAL SCRIPT
Usa EXECUTE EXTERNAL SCRIPT i permessi per concedere l'esecuzione di script esterni su linguaggi specifici.
EXECUTE EXTERNAL SCRIPT differisce dal EXECUTE ANY EXTERNAL SCRIPT permesso del database, che non consente di concedere il permesso di esecuzione su una specifica lingua.
Concedere il permesso agli utenti non DBO di eseguire un linguaggio specifico:
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::language_name
TO database_principal_name;
Autorizzazioni di riferimento a librerie esterne
Simile agli assembly, i linguaggi esterni richiedono permessi di riferimento affinché ci sia un collegamento tra librerie esterne e linguaggi esterni. Ad esempio, prima di eliminare un linguaggio esterno, devi eliminare tutte le librerie esterne che lo fanno referenza. Considera il linguaggio esterno come un oggetto di livello superiore rispetto alle librerie esterne nella gerarchia.
Esempi
R. Creare un linguaggio esterno in un database
L'esempio seguente aggiunge un linguaggio esterno denominato Java a un database in SQL Server in Windows.
CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll');
GO
B. Aggiungere un linguaggio esterno per Windows e Linux
È possibile specificare fino a due <file_spec>, uno per Windows e uno per 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. Concedere le autorizzazioni per eseguire script esterni
Nell'esempio seguente viene concesso l'accesso all'entità di sicurezza mylogin per l'esecuzione di script usando il linguaggio esterno Java.
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::Java
TO mylogin;