Megosztás a következőn keresztül:


KÜLSŐ KÓDTÁR MÓDOSÍTÁSA (Transact-SQL)

A következőkre vonatkozik: Sql Server 2017 (14.x) és újabb verziók Felügyelt Azure SQL-példány

Módosítja egy meglévő külső csomagtár tartalmát.

Megjegyzés:

Az SQL Server 2017 -ben (14.x) az R nyelv és a Windows platform támogatott. A Windows és Linux platformokon futó R, Python és külső nyelvek támogatottak az SQL Server 2019 (15.x) és újabb verzióiban.

Az SQL Server 2019 szintaxisa

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>
}

Az SQL Server 2017 szintaxisa

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
}

Felügyelt Azure SQL-példány szintaxisa

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'
}

Arguments

LIBRARY_NAME

Egy meglévő csomagtár nevét adja meg. A kódtárak hatóköre a felhasználóra terjed ki. A kódtárneveknek egyedinek kell lenniük egy adott felhasználó vagy tulajdonos kontextusában.

Az erőforrástár neve nem rendelhető hozzá tetszőlegesen. Ez azt a nevet kell használnia, amelyet a hívó futtatókörnyezet elvár a csomag betöltésekor.

OWNER_NAME

Megadja annak a felhasználónak vagy szerepkörnek a nevét, aki a külső tár tulajdonosa.

FILE_SPEC

Egy adott platform csomagjának tartalmát adja meg. Platformonként csak egy fájlösszetevő támogatott.

A fájl helyi elérési út vagy hálózati elérési út formájában adható meg. Ha az adatforrás beállítás meg van adva, a fájlnév relatív elérési út lehet a fájlban EXTERNAL DATA SOURCEhivatkozott tárolóhoz képest.

Opcionálisan meg lehet adni egy operációsrendszer-platformot a fájlhoz. Egy adott nyelvhez vagy futtatókörnyezethez minden operációsrendszer-platformon csak egy fájlösszetevő vagy -tartalom engedélyezett.

LIBRARY_BITS

A csomag tartalmát hexa literálként adja meg, a szerelvényekhez hasonlóan.

Ez a beállítás akkor hasznos, ha rendelkezik a szükséges engedéllyel egy tár módosításához, de a kiszolgálón a fájlhozzáférés korlátozott, és a tartalmat nem mentheti olyan elérési útra, amelyhez a kiszolgáló hozzáférhet.

Ehelyett bináris formátumban átadhatja a csomag tartalmát változóként.

PLATFORM = WINDOWS

Megadja a tár tartalmának platformját. Erre az értékre akkor van szükség, ha egy meglévő tárat módosít egy másik platform hozzáadásához. Az SQL Server 2017-ben (14.x) a Windows az egyetlen támogatott platform.

PLATFORM

Megadja a tár tartalmának platformját. Erre az értékre akkor van szükség, ha egy meglévő tárat módosít egy másik platform hozzáadásához. Az SQL Server 2019 -ben (15.x) a Windows és a Linux a támogatott platformok.

LANGUAGE = 'R'

Megadja a csomag nyelvét. Az R támogatott az SQL Server 2017-ben (14.x).

LANGUAGE

Megadja a csomag nyelvét. Az érték lehet R vagy Python a felügyelt Azure SQL-példányban.

LANGUAGE

Megadja a csomag nyelvét. Az érték lehet R, Pythonvagy egy külső nyelv neve (lásd: CREATE EXTERNAL LANGUAGE).

Megjegyzések

Az R nyelvhez a csomagokat tömörített archív fájlok formájában kell előkészíteni a .zip Windows bővítményével. Az SQL Server 2017-ben (14.x) csak a Windows platform támogatott.

Az R nyelv esetében a fájl használatakor a csomagokat tömörített archív fájlok formájában kell elkészíteni a .zip kiterjesztéssel.

A Python nyelvhez a csomagot .whl tömörített archív fájl formájában kell előkészíteni egy fájlban vagy .zip fájlban. Ha a csomag már fájl .zip , akkor azt egy új .zip fájlban kell szerepeltetni. A csomagok .whl.zip közvetlen feltöltése jelenleg nem támogatott.

Az ALTER EXTERNAL LIBRARY utasítás csak a kódtár bitjeinek feltöltését tölti fel az adatbázisba. A módosított kódtár akkor lesz telepítve, ha egy felhasználó kódot futtat a kódtárat hívó sp_execute_external_script .

Egy SQL-példányban számos csomag , más néven rendszercsomagok vannak előre telepítve. Rendszercsomagok nem vehetők fel, nem frissíthetők és nem távolíthatók el.

Permissions

Alapértelmezés szerint a dbo-felhasználó vagy a szerepkör bármely tagja db_owner rendelkezik futtatási ALTER EXTERNAL LIBRARYengedéllyel. Emellett a külső tárat létrehozó felhasználó módosíthatja a külső tárat.

Példák

Az alábbi példák egy külső, úgynevezett kódtárat módosítanak customPackage.

Tár tartalmának cseréje fájl használatával

Az alábbi példa egy külső kódtárat módosít, amelynek neve customPackageegy tömörített fájl, amely a frissített biteket tartalmazza.

ALTER EXTERNAL LIBRARY customPackage
    SET (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\customPackage.zip')
    WITH (LANGUAGE = 'R');

A frissített kódtár telepítéséhez hajtsa végre a tárolt eljárást sp_execute_external_script.

EXECUTE sp_execute_external_script
    @language = N'R',
    @script = N'library(customPackage)';

A Python nyelv esetében a példa úgy is működik, hogy lecseréli 'R' a következőre 'Python': .

Meglévő kódtár módosítása bájtfolyam használatával

Az alábbi példa úgy módosítja a meglévő kódtárat, hogy hexadecimális literálként adja át az új biteket.

ALTER EXTERNAL LIBRARY customLibrary
SET (CONTENT = 0xABC123...) WITH (LANGUAGE = 'R');

A Python nyelv esetében a példa úgy is működik, hogy lecseréli 'R' a következőre 'Python': .

Megjegyzés:

Ez a kódminta csak a szintaxist mutatja be; a bináris érték csonkolva CONTENT = van az olvashatóság érdekében, és nem hoz létre működő kódtárat. A bináris változó tényleges tartalma hosszabb.