ALTER EXTERNAL LIBRARY (Transact-SQL)
Область применения: SQL Server 2017 (14.x) и более поздних
версий Управляемый экземпляр SQL Azure
Изменяет содержимое существующей внешней библиотеки пакетов.
Примечание.
В SQL Server 2017 поддерживаются язык R и платформа Windows. R, Python и внешние языки на платформах Windows и Linux поддерживаются в SQL Server 2019 и более поздних версиях.
Примечание.
В Управляемом экземпляре SQL Azure библиотеку можно изменить, удалив ее, а затем установив измененную версию с помощью пакета sqlmlutils. Дополнительные сведения о sqlmlutils см. в статьях Установка пакетов Python с помощью sqlmlutils и Установка новых пакетов R с помощью sqlmlutils.
Синтаксис для SQL Server 2019
ALTER EXTERNAL LIBRARY library_name
[ AUTHORIZATION owner_name ]
SET <file_spec>
WITH ( LANGUAGE = <language> )
[ ; ]
<file_spec> ::=
{
(CONTENT = { <client_library_specifier> | <library_bits> | NONE}
[, PLATFORM = <platform> )
}
<client_library_specifier> :: =
{
'[\\computer_name\]share_name\[path\]manifest_file_name'
| '[local_path\]manifest_file_name'
| '<relative_path_in_external_data_source>'
}
<library_bits> :: =
{
varbinary_literal
| varbinary_expression
}
<platform> :: =
{
WINDOWS
| LINUX
}
<language> :: =
{
'R'
| 'Python'
| <external_language>
}
Синтаксис для SQL Server 2017
ALTER EXTERNAL LIBRARY library_name
[ AUTHORIZATION owner_name ]
SET <file_spec>
WITH ( LANGUAGE = 'R' )
[ ; ]
<file_spec> ::=
{
(CONTENT = { <client_library_specifier> | <library_bits> | NONE}
[, PLATFORM = WINDOWS )
}
<client_library_specifier> :: =
{
'[\\computer_name\]share_name\[path\]manifest_file_name'
| '[local_path\]manifest_file_name'
| '<relative_path_in_external_data_source>'
}
<library_bits> :: =
{
varbinary_literal
| varbinary_expression
}
Синтаксис для Управляемого экземпляра SQL Azure
CREATE EXTERNAL LIBRARY library_name
[ AUTHORIZATION owner_name ]
FROM <file_spec> [ ,...2 ]
WITH ( LANGUAGE = <language> )
[ ; ]
<file_spec> ::=
{
(CONTENT = <library_bits>)
}
<library_bits> :: =
{
varbinary_literal
| varbinary_expression
}
<language> :: =
{
'R'
| 'Python'
}
Аргументы
library_name
Указывает имя существующей библиотеки пакетов. Область действия библиотек ограничивается пользователем. Имена библиотек должны быть уникальными в контексте определенного пользователя или владельца.
Имя библиотеки не может назначаться произвольным образом. То есть необходимо использовать имя, которое ожидает вызывающая среда выполнения при загрузке пакета.
owner_name
Указывает имя пользователя или роли, которой принадлежит внешняя библиотека.
file_spec
Указывает содержимое пакета для конкретной платформы. Поддерживается только один файл артефакта на платформу.
Файл можно указать в виде локального или сетевого пути. Если указан параметр источника данных, имя файла может быть относительным путем по отношению к контейнеру, на который ссылается EXTERNAL DATA SOURCE
.
При необходимости можно указать платформу операционной системы для файла. Для каждой платформы операционной системы для конкретного языка или среды выполнения разрешен только один артефакт файла или содержимое.
library_bits
Задает содержимое пакета как шестнадцатеричный литерал, аналогично сборкам.
Этот параметр можно использовать, если у вас есть необходимое разрешение на изменение библиотеки, но доступ к файлам на сервере ограничен и не удается сохранить содержимое в пути, к которому у сервера есть доступ.
Вместо этого можно передать содержимое пакета в качестве переменной в двоичном формате.
platform = WINDOWS
Указывает платформу для содержимого библиотеки. Это значение является обязательным при изменении существующей библиотеки для добавления другой платформы. В SQL Server 2017 поддерживается только платформа Windows.
platform
Указывает платформу для содержимого библиотеки. Это значение является обязательным при изменении существующей библиотеки для добавления другой платформы. В SQL Server 2019 поддерживаются платформы Windows и Linux.
LANGUAGE = 'R'
Задает язык пакета. Язык R поддерживается в SQL Server 2017.
language
Задает язык пакета. Значение может быть R или Python в Управляемом экземпляре SQL Azure.
language
Задает язык пакета. Значением может быть R, Python или название внешнего языка (см. раздел CREATE EXTERNAL LANGUAGE).
Замечания
В языке R пакеты должны быть подготовлены в виде сжатых архивных файлов с расширением ZIP для Windows. В SQL Server 2017 поддерживается только платформа Windows.
При использовании файла в языке R пакеты должны быть подготовлены в виде сжатых архивных файлов с расширением ZIP.
Для языка Python необходимо подготовить пакет в WHL- или ZIP-файле в виде файла с ZIP-архивом. Если пакет уже является ZIP-файлом, он должен быть включен в новый ZIP-файл. Отправка пакета в качестве WHL- или ZIP-файла напрямую в настоящее время не поддерживается.
Инструкция ALTER EXTERNAL LIBRARY
только загружает биты библиотеки в базу данных. Измененная библиотека устанавливается при выполнении кода в sp_execute_external_script (Transact-SQL), который вызывает библиотеку.
Набор пакетов, называемых системными пакетами, устанавливается в экземпляре SQL предварительно. Пользователь не может добавлять, обновлять и удалять системные пакеты.
Разрешения
По умолчанию разрешение на запуск ALTER EXTERNAL LIBRARY имеет пользователь dbo или любой член роли db_owner. Кроме того, внешнюю библиотеку может изменять пользователь, который ее создал.
Примеры
В следующем примере изменяется внешняя библиотека customPackage
.
Замена содержимого библиотеки с помощью файла
В следующем примере изменяется внешняя библиотека customPackage
с помощью сжатого ZIP-файла, содержащего обновленные биты.
ALTER EXTERNAL LIBRARY customPackage
SET
(CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\customPackage.zip')
WITH (LANGUAGE = 'R');
Чтобы установить обновленную библиотеку, выполните хранимую процедуру sp_execute_external_script
.
EXEC sp_execute_external_script
@language =N'R',
@script=N'library(customPackage)'
;
В языке Python пример также выполняется при замене 'R'
на 'Python'
.
Изменение существующей библиотеки с помощью байтового потока
В следующем примере существующая библиотека изменяется путем передачи новых битов в виде шестнадцатеричного литерала.
ALTER EXTERNAL LIBRARY customLibrary
SET (CONTENT = 0xABC123...) WITH (LANGUAGE = 'R');
В языке Python пример также выполняется при замене 'R'
на 'Python'
.
Примечание.
В этом примере кода показан только синтаксис. Двоичное значение в CONTENT =
было усечено для удобства чтения и не создает рабочую библиотеку. Фактическое содержимое двоичной переменной будет гораздо длиннее.
См. также
CREATE EXTERNAL LIBRARY (Transact-SQL)
DROP EXTERNAL LIBRARY (Transact-SQL)
sys.external_library_files
sys.external_libraries