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 az R nyelv és a Windows platform támogatott. Az R, a Python és a külső nyelvek a Windows és Linux platformokon támogatottak az SQL Server 2019-ben és újabb verzióiban.

Megjegyzés:

A felügyelt Azure SQL-példányban a kódtárat úgy módosíthatja, hogy eltávolítja, majd sqlmlutils használatával telepíti a módosított verziót. További információ az sqlmlutilsról: Python-csomagok telepítése sqlmlutils használatával és új R-csomagok telepítése sqlmlutils használatával.

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 a Windows az egyetlen támogatott platform.

peron

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

Nyelv

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

Nyelv

Megadja a csomag nyelvét. Az érték lehet R, Python vagy 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 Windows .ZIP kiterjesztésével. Az SQL Server 2017-ben 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 nyelv esetében a .whl vagy .zip fájlban lévő csomagot tömörített archív fájl formájában kell elkészíteni. Ha a csomag már .zip fájl, akkor azt egy új .zip fájlba kell felvenni. A csomagok közvetlen feltöltése .whl vagy .zip fájlként 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 (Transact-SQL).

Az SQL-példányokban számos csomag , más néven rendszercsomagok vannak előre telepítve. A rendszercsomagokat a felhasználó nem tudja hozzáadni, frissíteni vagy eltávolítani.

Permissions

Alapértelmezés szerint a dbo-felhasználó vagy a szerepkör bármely tagja db_owner rendelkezik engedéllyel az ALTER EXTERNAL LIBRARY futtatására. 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.

EXEC 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 CONTENT = csonkolva lett 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 sokkal hosszabb lenne.

Lásd még

KÜLSŐ KÓDTÁR LÉTREHOZÁSA (Transact-SQL)
DROP EXTERNAL LIBRARY (Transact-SQL)
sys.external_library_files
sys.external_libraries