Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server 2019 (15.x) и более поздних версий
Регистрирует расширения внешнего языка в базе данных из заданного пути файла или байтового потока. Это утверждение является универсальным механизмом, позволяющим администратору базы данных регистрировать новые внешние языковые расширения на любой платформе ОС, поддерживаемой SQL Server. См подробнее о расширениях языка.
Примечание.
R и Python — это зарезервированные имена. Нельзя создать внешний язык с такими конкретными именами. См. подробнее об использовании R и Python в документации по Службам машинного обучения SQL Server.
Синтаксис
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'
Аргументы
language_name
Языки — это объекты, охватывающие базу данных. Имена языков должны быть уникальными в пределах базы данных.
owner_name
Указывает имя пользователя или роли, которым принадлежит внешний язык. Если вы не указываете значение, текущий пользователь становится владельцем. В зависимости от разрешений другим пользователям может потребоваться явное разрешение для выполнения скриптов на определённом языке.
file_spec
Указывает содержимое расширения языка. Для конкретного языка на каждой платформе разрешен только один <file_spec> язык.
external_lang_specifier
Полный путь файла к файлу .zip или tar.gz, содержащему код расширения. Этот контент может быть либо путь к .zip-файлу (на Windows), либо tar.gz-файл (на Linux).
content_bits
Указывает содержимое языка в виде шестнадцатеричного литерала, аналогично сборкам.
Используйте эту опцию, когда серверная файловая система ограничена и вы не можете скопировать файлы библиотеки в место, к которому сервер может получить доступ. Для создания или изменения языка необходимо иметь необходимые разрешения.
external_lang_file_name
Имя файла расширения DLL или SO. Название указывает на правильный файл, когда в <external_lang_specifier> .zip или tar.gz существует несколько файлов .dll или .so.
external_lang_parameters
Задаёт набор параметров для передачи во внешний языковой режим. Внешняя среда выполнения получает значения параметров после запуска внешнего процесса. Переменные среды, напротив, становятся доступными для расширения языка до начала внешнего процесса.
external_lang_env_variables
Задаёт набор переменных среды, которые должны быть доступны для внешнего языка перед началом внешнего процесса. Например, установите главную папку самого runtime, например JRE_HOME.
platform
Этот параметр необходим для гибридных сценариев операционной системы. В гибридной архитектуре язык нужно регистрировать один раз на платформу. Если вы не указываете платформу, SQL Server предполагает текущую ОС.
Разрешения
Требуется разрешение CREATE EXTERNAL LANGUAGE. По умолчанию любой участник роли db_owner фиксированной базы данных имеет права на создание внешнего языка. Для всех остальных пользователей вы должны явно предоставить разрешение, используя GRANT оператор, указывающий CREATE EXTERNAL LANGUAGE это право в качестве права.
Чтобы изменить библиотеку, требуется отдельное разрешение, ALTER ANY EXTERNAL LANGUAGE.
Разрешение EXECUTE EXTERNAL SCRIPT
Используйте EXECUTE EXTERNAL SCRIPT разрешения для предоставления внешнего выполнения скриптов на конкретных языках.
EXECUTE EXTERNAL SCRIPT отличается от EXECUTE ANY EXTERNAL SCRIPT разрешения базы данных, которые не позволяют предоставлять разрешение на выполнение на конкретном языке.
Предоставление пользователям, не работающим с DBO , разрешение на выполнение определённого языка:
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::language_name
TO database_principal_name;
Ссылочные разрешения на внешние библиотеки
Подобно ассемблям, внешние языки требуют разрешения на ссылки, чтобы была связь между внешними библиотеками и внешними языками. Например, прежде чем отказаться от внешнего языка, нужно убрать все внешние библиотеки, которые на него ссылаются. Рассматривайте внешний язык как объект более высокого уровня, чем внешние библиотеки в иерархии.
Примеры
А. Создание внешнего языка в базе данных
Следующий пример добавляет внешний язык Java в базу данных на сервере SQL Server в Windows.
CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll');
GO
B. Создание внешнего языка одновременно для Windows и Linux
Вы можете указать два параметра <file_spec>: один для Windows, а другой для 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
В. Предоставление разрешений на выполнение внешнего скрипта
В приведенном ниже примере субъекту mylogin предоставляется доступ для выполнения скрипта с использованием внешнего языка Java.
GRANT EXECUTE EXTERNAL SCRIPT ON EXTERNAL LANGUAGE ::Java
TO mylogin;