다음을 통해 공유


ALTER EXTERNAL LIBRARY(Transact-SQL)

적용 대상: SQL Server 2017(14.x) 이상 Azure SQL Managed Instance

기존 외부 패키지 라이브러리의 콘텐츠를 수정합니다.

참고 항목

SQL Server 2017에서는 R 언어 및 Windows 플랫폼이 지원됩니다. Windows 및 Linux 플랫폼의 R, Python 및 외부 언어는 SQL Server 2019 이상에서 지원됩니다.

참고 항목

Azure SQL Managed Instance에서 라이브러리를 제거한 다음 sqlmlutils를 사용하여 변경된 버전을 설치하여 라이브러리를 변경할 수 있습니다. sqlmlutils에 대한 자세한 내용은 sqlmlutils를 사용하여 Python 패키지 설치 및 sqlmlutils를 사용하여 새 R 패키지 설치를 참조하세요.

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 
}

Azure SQL Managed Instance용 구문

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참조되는 컨테이너와 관련된 상대 경로가 될 수 있습니다.

필요에 따라 파일에 대한 OS 플랫폼을 지정할 수 있습니다. 특정 언어 또는 런타임에 대해 각 OS 플랫폼에 대해 하나의 파일 아티팩트 또는 콘텐츠만 허용됩니다.

library_bits

패키지의 콘텐츠를 어셈블리와 유사한 16진수 리터럴로 지정합니다.

이 옵션은 라이브러리를 변경하는 데 필요한 권한이 있지만 서버의 파일 액세스가 제한되며 서버에서 액세스할 수 있는 경로에 콘텐츠를 저장할 수 없는 경우에 유용합니다.

대신 패키지 내용을 이진 형식의 변수로 전달할 수 있습니다.

platform = WINDOWS

라이브러리의 콘텐츠에 대한 플랫폼을 지정합니다. 이 값은 기존 라이브러리를 수정하여 다른 플랫폼을 추가할 때 필요합니다. SQL Server 2017에서 Windows는 유일하게 지원되는 플랫폼입니다.

platform

라이브러리의 콘텐츠에 대한 플랫폼을 지정합니다. 이 값은 기존 라이브러리를 수정하여 다른 플랫폼을 추가할 때 필요합니다. SQL Server 2019에서 Windows 및 Linux는 지원되는 플랫폼입니다.

LANGUAGE = 'R'

패키지의 언어를 지정합니다. R은 SQL Server 2017에서 지원됩니다.

language

패키지의 언어를 지정합니다. 값은 Azure SQL Managed Instance의 R 또는 Python수 있습니다.

language

패키지의 언어를 지정합니다. 값은 R, Python 또는 외부 언어의 이름일 수 있습니다(CREATE EXTERNAL LANGUAGE 참조).

설명

R 언어의 경우 패키지를 Windows용 .ZIP 확장명의 압축된 보관 파일 형태로 준비해야 합니다. SQL Server 2017에서는 Windows 플랫폼만 지원됩니다.

R 언어의 경우 파일을 사용할 때 패키지를 .ZIP 확장명의 압축된 보관 파일 형태로 준비해야 합니다.

Python 언어의 경우 .whl 또는 .zip 파일의 패키지를 압축된 보관 파일 형식으로 준비해야 합니다. 패키지가 이미 .zip 파일인 경우 새 .zip 파일에 포함되어야 합니다. 패키지를 .whl 또는 .zip 파일로 직접 업로드하는 것은 현재 지원되지 않습니다.

이 문은 ALTER EXTERNAL LIBRARY 라이브러리 비트만 데이터베이스에 업로드합니다. 수정된 라이브러리는 사용자가 라이브러리를 호출하는 sp_execute_external_script(Transact-SQL)의 코드를 실행할 때 설치됩니다.

시스템 패키지라고 하는 여러 패키지가 SQL 인스턴스에 미리 설치되어 있습니다. 사용자가 시스템 패키지를 추가, 업데이트 또는 제거할 수 없습니다.

사용 권한

기본적으로 dbo 사용자 또는 역할 db_owner 멤버는 ALTER EXTERNAL LIBRARY를 실행할 수 있는 권한이 있습니다. 또한 외부 라이브러리를 만든 사용자는 해당 외부 라이브러리를 변경할 수 있습니다.

예제

다음 예제에서는 라는 customPackage외부 라이브러리를 변경합니다.

파일을 사용하여 라이브러리의 내용 바꾸기

다음 예제에서는 업데이트된 비트가 포함된 압축된 파일을 사용하여 호출 customPackage된 외부 라이브러리를 수정합니다.

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'으로 바꾸면 이 예제가 작동합니다.

바이트 스트림을 사용하여 기존 라이브러리 변경

다음 예제에서는 새 비트를 16진수 리터럴로 전달하여 기존 라이브러리를 변경합니다.

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