Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2019 (15.x) e versões posteriores
Regista extensões de linguagem externa na base de dados a partir do caminho de ficheiro ou fluxo de bytes especificado. Esta afirmação é um mecanismo genérico para o administrador da base de dados registar novas extensões de linguagem externa em qualquer plataforma de SO que o SQL Server suporte. Para mais informações, consulte Extensões de Linguagem.
Note
R e Python são nomes reservados. Não se pode criar uma linguagem externa com esses nomes específicos. Para mais informações sobre como usar R e Python, consulte SQL Server Machine Learning Serviços.
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
As linguagens são objetos com âmbito de base de dados. Os nomes das línguas devem ser únicos dentro da base de dados.
owner_name
Especifica o nome do utilizador ou função que detém a linguagem externa. Se não especificar um valor, o utilizador atual torna-se o proprietário. Dependendo das permissões, outros utilizadores podem precisar de permissão explícita para executar scripts usando uma linguagem específica.
file_spec
Especifica o conteúdo da extensão da linguagem. Só é permitido um <file_spec> para uma língua específica, por plataforma.
external_lang_specifier
O caminho completo do ficheiro para o ficheiro .zip ou tar.gz que contém o código da extensão. Este conteúdo pode ser um caminho para um ficheiro .zip (no Windows) ou um ficheiro tar.gz (no Linux).
content_bits
Especifica o conteúdo da linguagem como um literal hexadecimal, semelhante a assemblies.
Use esta opção quando o sistema de ficheiros do servidor estiver restrito e não puder copiar os ficheiros da biblioteca para um local acessível ao servidor. Deve ter as permissões necessárias para criar ou alterar a linguagem.
external_lang_file_name
Nome da extensão .dll ou ficheiro .so. O nome identifica o ficheiro correto quando existem vários ficheiros .dll ou .so na <external_lang_specifier> .zip ou tar.gz.
external_lang_parameters
Especifica um conjunto de parâmetros a passar para o runtime da linguagem externa. O tempo de execução externo recebe valores de parâmetros após o início do processo externo. As variáveis de ambiente, em contraste, tornam-se acessíveis à extensão da linguagem antes do início do processo externo.
external_lang_env_variables
Especifica um conjunto de variáveis de ambiente a disponibilizar ao tempo de execução da linguagem externa antes do início do processo externo. Por exemplo, definir o diretório principal do próprio runtime, como JRE_HOME.
plataforma
Este parâmetro é necessário para cenários de sistemas operativos híbridos. Numa arquitetura híbrida, deve registar a linguagem uma vez por plataforma. Se não especificares uma plataforma, o SQL Server assume o sistema operativo atual.
Permissions
Requer a permissão de CREATE EXTERNAL LANGUAGE. Por defeito, qualquer membro da db_owner função fixa de base de dados tem permissões para criar uma linguagem externa. Para todos os outros utilizadores, deve conceder explicitamente permissão usando uma GRANT instrução, especificando CREATE EXTERNAL LANGUAGE como privilégio.
Para modificar uma biblioteca, precisa da permissão separada, ALTER ANY EXTERNAL LANGUAGE.
PERMISSÃO PARA EXECUTAR SCRIPT EXTERNO
Use EXECUTE EXTERNAL SCRIPT permissões para conceder execução de scripts externos em linguagens específicas.
EXECUTE EXTERNAL SCRIPT difere da EXECUTE ANY EXTERNAL SCRIPT permissão da base de dados, que não permite conceder permissão de execução numa linguagem específica.
Conceda permissão a utilizadores não DBO para executar uma linguagem específica:
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::language_name
TO database_principal_name;
Permissões de referência para bibliotecas externas
Tal como nas assemblies, as linguagens externas requerem permissões de referência para que haja uma ligação entre bibliotecas externas e linguagens externas. Por exemplo, antes de eliminar uma linguagem externa, deve eliminar todas as bibliotecas externas que a referenciam. Veja a linguagem externa como um objeto de nível superior ao das bibliotecas externas na hierarquia.
Examples
A. Criar uma linguagem externa numa base de dados
O exemplo a seguir adiciona uma linguagem externa chamada Java a um banco de dados no SQL Server no Windows.
CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll');
GO
B. Criar uma linguagem externa para Windows e Linux
Você pode especificar até dois <file_spec>, um para Windows e outro 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 permissões para executar scripts externos
O exemplo seguinte concede ao mylogin acesso principal para executar scripts usando a linguagem externa Java.
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::Java
TO mylogin;