次の方法で共有


ALTER EXTERNAL LIBRARY (Transact-SQL)

適用対象: SQL Server 2017 (14.x) 以降 Azure SQL Managed Instance

既存の外部パッケージ ライブラリのコンテンツを変更します。

Note

SQL Server 2017 では、R 言語と Windows プラットフォームがサポートされています。 Windows および Linux プラットフォームの R、Python、外部言語は SQL Server 2019 以降でサポートされています。

Note

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

特定のプラットフォーム用のパッケージのコンテンツを指定します。 プラットフォームごとに 1 つのファイル成果物のみがサポートされます。

ファイルは、ローカル パスまたはネットワーク パスの形式で指定することができます。 データ ソース オプションが指定されている場合、ファイル名は EXTERNAL DATA SOURCE で参照されているコンテナーに対する相対パスにすることができます。

必要に応じて、ファイルの OS プラットフォームを指定できます。 特定の言語またはランタイムの OS プラットフォームごとに 1 つのファイル成果物またはコンテンツのみが許可されます。

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

パッケージの言語を指定します。 値は RPython、または外部言語の名前にできます (「CREATE EXTERNAL LANGUAGE」を参照してください)。

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

解説

R 言語の場合、Windows の .ZIP 拡張子を使用して、ZIP アーカイブ ファイルの形式でパッケージを準備する必要があります。 SQL Server 2017 では、Windows プラットフォームのみがサポートされています。

R 言語の場合、ファイルを使用するときに .ZIP 拡張子を使用して、ZIP アーカイブ ファイルの形式でパッケージを準備する必要があります。

Python 言語の場合、.whl または .zip ファイルのパッケージは zip アーカイブ ファイルの形式で準備する必要があります。 パッケージが既に .zip ファイルになっている場合、新しい .zip ファイルに含める必要があります。 現在のところ、.whl または .zip ファイルとしてパッケージを直接アップロードすることはできません。

ALTER EXTERNAL LIBRARY ステートメントは、ライブラリ ビットのデータベースへのアップロードのみを行います。 ライブラリを呼び出す sp_execute_external_script (Transact-SQL) でユーザーがコードを実行すると、変更されたライブラリがインストールされます。

SQL インスタンスには、"システム パッケージ" という多数のパッケージが事前にインストールされています。 ユーザーがシステム パッケージを追加、更新、または削除することはできません。

アクセス許可

既定では、dbo ユーザーまたはロール db_owner のすべてのメンバーが、ALTER EXTERNAL LIBRARY を実行する権限を持っています。 さらに、外部ライブラリを作成したユーザーも、その外部ライブラリを変更できます。

次の例では、customPackage と呼ばれる外部ライブラリを変更します。

ファイルを使用してライブラリのコンテンツを置き換える

次の例では、更新されたビットを含む ZIP 形式のファイルを使用して、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' に替えてもこの例は機能します。

Note

このコード サンプルは構文のみを示しています。CONTENT = のバイナリ値は読みやすさのため切り捨てられており、作業ライブラリを作成しません。 バイナリ変数の実際の内容はこれよりも長くなります。

関連項目

CREATE EXTERNAL LIBRARY (Transact-SQL)
DROP EXTERNAL LIBRARY (Transact-SQL)
sys.external_library_files
sys.external_libraries