Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: SQL Server 2019 (15.x) y versiones posteriores
Registra las extensiones de lenguaje externo en la base de datos desde la secuencia de bytes o la ruta de acceso de archivo especificada. Esta afirmación es un mecanismo genérico para que el administrador de bases de datos registre nuevas extensiones de lenguaje externo en cualquier plataforma de sistema operativo que SQL Server soporte. Para obtener más información, consulte las extensiones de lenguaje.
Nota
R y Python son nombres reservados. No puedes crear un lenguaje externo con esos nombres específicos. Para obtener más información sobre cómo usar R y Python, consulte SQL Server Machine Learning Services.
Sintaxis
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'
Argumentos
language_name
Los lenguajes son objetos con alcance de base de datos. Los nombres del lenguaje deben ser únicos en la base de datos.
owner_name
Especifica el nombre del usuario o rol que es propietario del lenguaje externo. Si no especificas un valor, el usuario actual se convierte en el propietario. Dependiendo de los permisos, otros usuarios pueden necesitar permisos explícitos para ejecutar scripts usando un lenguaje específico.
file_spec
Especifica el contenido de la extensión del lenguaje. Solo se permite uno <file_spec> para un idioma específico, por plataforma.
external_lang_specifier
La ruta completa del archivo hacia el archivo .zip o tar.gz que contiene el código de la extensión. Este contenido puede ser una ruta hacia un archivo .zip (en Windows) o un archivo tar.gz (en Linux).
content_bits
Especifica el contenido del lenguaje como un literal hexadecimal, similar a los ensamblados.
Usa esta opción cuando el sistema de archivos del servidor esté restringido y no puedas copiar los archivos de la biblioteca a una ubicación a la que el servidor pueda acceder. Debes tener los permisos necesarios para crear o modificar el lenguaje.
external_lang_file_name
Nombre del archivo con extensión .dll o .so. El nombre identifica el archivo correcto cuando existen varios archivos .dll o .so en el <external_lang_specifier> .zip o tar.gz.
external_lang_parameters
Especifica un conjunto de parámetros a pasar al entorno de ejecución del lenguaje externo. El tiempo de ejecución externo recibe valores de parámetros después de que comienza el proceso externo. Las variables de entorno, en cambio, se vuelven accesibles para la extensión del lenguaje antes de que comience el proceso externo.
external_lang_env_variables
Especifica un conjunto de variables de entorno que deben poner a disposición del entorno de ejecución del lenguaje externo antes de que comience el proceso externo. Por ejemplo, establece el directorio principal del propio tiempo de ejecución, como JRE_HOME.
platform
Este parámetro es necesario para escenarios de sistemas operativos híbridos. En una arquitectura híbrida, debes registrar el lenguaje una vez por plataforma. Si no especificas una plataforma, SQL Server asume el sistema operativo actual.
Permisos
Requiere el permiso CREATE EXTERNAL LANGUAGE. Por defecto, cualquier miembro del rol de base de datos fija db_owner tiene permisos para crear un lenguaje externo. Para todos los demás usuarios, debes conceder explícitamente permiso usando una GRANT sentencia, especificando CREATE EXTERNAL LANGUAGE como privilegio.
Para modificar una biblioteca, necesitas el permiso separado, ALTER ANY EXTERNAL LANGUAGE.
Permiso EXECUTE EXTERNAL SCRIPT
Utiliza EXECUTE EXTERNAL SCRIPT permisos para conceder la ejecución de scripts externos en lenguajes específicos.
EXECUTE EXTERNAL SCRIPT difiere del EXECUTE ANY EXTERNAL SCRIPT permiso de base de datos, que no permite conceder permiso de ejecución en un lenguaje específico.
Concede permiso a usuarios no DBO para ejecutar un lenguaje específico:
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::language_name
TO database_principal_name;
Permisos de referencia para bibliotecas externas
Al igual que en ensambladores, los lenguajes externos requieren permisos de referencia para que haya un vínculo entre bibliotecas externas y lenguajes externos. Por ejemplo, antes de eliminar un lenguaje externo, debes eliminar todas las bibliotecas externas que lo referencian. Considera el lenguaje externo como un objeto de nivel superior que las bibliotecas externas en la jerarquía.
Ejemplos
A. Crear un lenguaje externo en una base de datos
En el ejemplo siguiente se agrega un lenguaje externo denominada Java a una base de datos de SQL Server en Windows.
CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll');
GO
B. Crear un lenguaje externo para Windows y Linux
Puede especificar hasta dos <file_spec>, uno para Windows y otro para 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. Conceder permisos para ejecutar un script externo
En el ejemplo siguiente se concede acceso a la entidad mylogin para que ejecute scripts mediante el lenguaje externo de Java.
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::Java
TO mylogin;