Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2019 (15.x) e versões posteriores
Registra as extensões de linguagem externa no banco de dados com base no fluxo de bytes ou no caminho de arquivo especificado. Esta declaração é um mecanismo genérico para o administrador de banco de dados registrar novas extensões externas de linguagem em qualquer plataforma de sistema operacional que o SQL Server suporte. Para saber mais, confira Extensões de Linguagem.
Observação
R e Python são nomes reservados. Você não pode criar uma linguagem externa com esses nomes específicos. Para saber mais sobre como usar R e Python, confira Serviços de Machine Learning do SQL Server.
Sintaxe
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
Linguagens são objetos com escopo de banco de dados. Os nomes das linguagens precisam ser exclusivos no banco de dados.
owner_name
Especifica o nome da função ou do usuário que é o proprietário da linguagem externa. Se você não especificar um valor, o usuário atual se torna o dono. Dependendo das permissões, outros usuários 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. Apenas uma <file_spec> é permitida para um idioma específico, por plataforma.
external_lang_specifier
O caminho completo do arquivo para o arquivo .zip ou tar.gz que contém o código da extensão. Esse conteúdo pode ser um caminho para um arquivo .zip (no Windows) ou um arquivo tar.gz (no Linux).
content_bits
Especifica o conteúdo da linguagem como um literal hexadecimal, de forma semelhante aos assemblies.
Use essa opção quando o sistema de arquivos do servidor estiver restrito e você não puder copiar os arquivos da biblioteca para um local acessível pelo servidor. Você deve ter as permissões necessárias para criar ou alterar o idioma.
external_lang_file_name
Nome do arquivo de extensão .dll ou .so. O nome identifica o arquivo correto quando existem vários arquivos .dll ou .so no <external_lang_specifier> .zip ou tar.gz.
external_lang_parameters
Especifica um conjunto de parâmetros a serem passados 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 do 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 serem disponibilizadas ao tempo de execução da linguagem externa antes do início do processo externo. Por exemplo, defina o diretório inicial do próprio runtime, como JRE_HOME.
platform
Esse parâmetro é necessário para cenários de sistema operacional híbrido. Em uma arquitetura híbrida, você deve registrar a linguagem uma vez por plataforma. Se você não especificar uma plataforma, o SQL Server assume o sistema operacional atual.
Permissões
Requer a permissão CREATE EXTERNAL LANGUAGE. Por padrão, qualquer membro do papel fixo de banco de dados db_owner tem permissões para criar uma linguagem externa. Para todos os outros usuários, você deve conceder explicitamente permissão usando uma GRANT instrução, especificando CREATE EXTERNAL LANGUAGE como privilégio.
Para modificar uma biblioteca, você precisa da permissão separada, ALTER ANY EXTERNAL LANGUAGE.
Permissão EXECUTE EXTERNAL SCRIPT
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 do banco de dados, que não permite conceder permissão de execução em uma linguagem específica.
Conceda permissão a usuários 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
Semelhante aos assemblies, linguagens externas exigem permissões de referência para que haja uma ligação entre bibliotecas externas e linguagens externas. Por exemplo, antes de descartar uma linguagem externa, você deve eliminar todas as bibliotecas externas que a referenciam. Veja a linguagem externa como um objeto de nível superior às bibliotecas externas na hierarquia.
Exemplos
a. Criar uma linguagem externa em um banco 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 o Windows e o Linux
Você pode especificar até dois <file_spec>, um para o Windows e outro para o 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 o script externo
O exemplo a seguir concede acesso de entidade de segurança mylogin para executar scripts usando a linguagem externa Java.
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::Java
TO mylogin;