Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik: Sql Server 2017 (14.x) és újabb verziók
Felügyelt Azure SQL-példány
R-, Python- vagy Java-csomagfájlokat tölt fel egy adatbázisba a megadott bájtstreamből vagy fájlelérési útból. Ez az utasítás általános mechanizmusként szolgál arra, hogy az adatbázis-rendszergazda feltöltse az SQL Server által támogatott új külső nyelvi futtatókörnyezetekhez és operációs rendszerekhez szükséges összetevőket.
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.
R- vagy Python-csomagfájlokat tölt fel egy adatbázisba a megadott bájtstreamből vagy fájlelérési útból. Ez az utasítás általános mechanizmusként szolgál az adatbázis-rendszergazda számára a szükséges összetevők feltöltéséhez.
Az SQL Server 2019 szintaxisa
CREATE EXTERNAL LIBRARY library_name
[ AUTHORIZATION owner_name ]
FROM <file_spec> [ ,...2 ]
WITH ( LANGUAGE = <language> )
[ ; ]
<file_spec> ::=
{
(CONTENT = { <client_library_specifier> | <library_bits> }
[, PLATFORM = <platform> ])
}
<client_library_specifier> :: =
{
'[file_path\]manifest_file_name'
}
<library_bits> :: =
{
varbinary_literal
| varbinary_expression
}
<platform> :: =
{
WINDOWS
| LINUX
}
<language> :: =
{
'R'
| 'Python'
| <external_language>
}
Az SQL Server 2017 szintaxisa
CREATE EXTERNAL LIBRARY library_name
[ AUTHORIZATION owner_name ]
FROM <file_spec> [ ,...2 ]
WITH ( LANGUAGE = 'R' )
[ ; ]
<file_spec> ::=
{
(CONTENT = { <client_library_specifier> | <library_bits> })
}
<client_library_specifier> :: =
{
'[file_path\]manifest_file_name'
}
<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
A példányra feltöltött kódtárak lehetnek nyilvánosak vagy privátak. Ha a tárat egy tagja dbohozza létre, a tár nyilvános, és az összes felhasználóval megosztható. Ellenkező esetben a tár csak az adott felhasználó számára privát.
A kódtárneveknek egyedinek kell lenniük egy adott felhasználó vagy tulajdonos kontextusában. Például két felhasználó RUser1 , és RUser2 egyenként és külön is feltöltheti az R-kódtár ggplot2-t. Ha RUser1 azonban a ggplot2 újabb verzióját szeretné feltölteni, a második példányt másként kell elnevezni, vagy a meglévő kódtárat kell lecserélni.
A kódtárnevek nem rendelhetők hozzá tetszőlegesen; az erőforrástár nevének meg kell egyeznie a külső szkriptben az erőforrástár betöltéséhez szükséges névvel.
OWNER_NAME
Megadja annak a felhasználónak vagy szerepkörnek a nevét, aki a külső tár tulajdonosa. Ha nincs megadva, a tulajdonjog az aktuális felhasználónak lesz megadva.
Az adatbázis tulajdonosa által birtokolt kódtárak globálisnak minősülnek az adatbázis és a futtatókörnyezet számára. Más szóval az adatbázis-tulajdonosok olyan kódtárakat hozhatnak létre, amelyek sok felhasználó által megosztott kódtárakat vagy csomagokat tartalmaznak. Ha a felhasználótól dbo eltérő felhasználó hoz létre külső tárat, a külső tár csak az adott felhasználó számára privát.
Amikor a felhasználó RUser1 végrehajt egy külső szkriptet, az érték libPath több elérési utat is tartalmazhat. Az első elérési út mindig az adatbázis tulajdonosa által létrehozott megosztott tár elérési útja. A második rész libPath megadja az egyénileg RUser1feltöltött csomagokat tartalmazó elérési utat.
FILE_SPEC
Egy adott platform csomagjának tartalmát adja meg. Platformonként csak egy fájlösszetevő támogatott.
A fájl megadható helyi vagy hálózati elérési út formájában.
A megadott <client_library_specifier>fájl elérésekor az SQL Server megszemélyesíti az aktuális Windows-bejelentkezés biztonsági környezetét. Ha <client_library_specifier> hálózati helyet (UNC-elérési utat) ad meg, az aktuális bejelentkezés megszemélyesítése nem lesz továbbítva a hálózati helyre a delegálási korlátozások miatt. Ebben az esetben a hozzáférés az SQL Server szolgáltatásfiók biztonsági környezetével történik. További információ: Hitelesítő adatok (adatbázismotor).
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 tárat kell létrehoznia, vagy módosítania kell egy meglévő tárat (és ehhez rendelkeznie kell a szükséges engedélyekkel), de a kiszolgálón lévő fájlrendszer korlátozott, és nem másolhatja a tárfájlokat olyan helyre, amelyhez a kiszolgáló hozzáférhet.
PLATFORM
Megadja a tár tartalmának platformját. Az érték alapértelmezés szerint azon a gazdagépplatformon van, amelyen az SQL Server fut. Ezért a felhasználónak nem kell megadnia az értéket. Ez akkor szükséges, ha több platform támogatott, vagy ha a felhasználónak másik platformot kell megadnia. 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 nyelv esetében a fájl használatakor 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 CREATE EXTERNAL LIBRARY utasítás feltölti a kódtár biteit az adatbázisba. A kódtár akkor lesz telepítve, ha egy felhasználó egy külső szkriptet futtat sp_execute_external_script használatával, és meghívja a csomagot vagy a tárat.
A példányra feltöltött kódtárak lehetnek nyilvánosak vagy privátak. Ha a tárat egy tagja dbohozza létre, a tár nyilvános, és az összes felhasználóval megosztható. Ellenkező esetben a tár csak az adott felhasználó számára privát.
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
CREATE EXTERNAL LIBRARY Engedélyre van szükség. Alapértelmezés szerint minden olyan felhasználó, aki dbo-tal rendelkezik, aki tagja a db_owner szerepkörnek, jogosult külső tár létrehozására. Minden más felhasználó számára explicit módon engedélyt kell adnia nekik egy GRANT utasítással, amely a jogosultságot adja meg CREATE EXTERNAL LIBRARY .
Az SQL Server 2019 -ben (15.x) az engedélyen kívül CREATE EXTERNAL LIBRARY a felhasználónak külső nyelvre is szüksége van a külső kódtárak létrehozásához.
GRANT REFERENCES ON EXTERNAL LANGUAGE::Java to user
GRANT CREATE EXTERNAL LIBRARY to user
A kódtárak módosításához külön engedély szükséges. ALTER ANY EXTERNAL LIBRARY
Ha egy fájl elérési útján szeretne külső tárat létrehozni, a felhasználónak Windows által hitelesített bejelentkezésnek vagy a sysadmin rögzített kiszolgálói szerepkör tagjának kell lennie.
Példák
Külső tár hozzáadása adatbázishoz
Az alábbi példa egy külső kódtárat ad customPackage hozzá egy adatbázishoz.
CREATE EXTERNAL LIBRARY customPackage
FROM (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\customPackage.zip')
WITH (LANGUAGE = 'R');
Miután sikeresen feltöltötte a tárat a példányra, a felhasználó végrehajtja az sp_execute_external_script eljárást a kódtár telepítéséhez.
EXECUTE sp_execute_external_script
@language = N'R',
@script = N'library(customPackage)';
Az SQL Server 2019 Python-nyelve (15.x) esetében a példa a következőre 'Python'való lecseréléssel 'R' is működik: .
Csomagok telepítése függőségekkel
Ha a telepíteni kívánt csomag függőségekkel rendelkezik, fontos, hogy az első és a második szintű függőségeket is elemezze, és győződjön meg arról, hogy az összes szükséges csomag elérhető a célcsomag telepítése előtt .
Tegyük fel például, hogy új csomagot szeretne telepíteni: packageA
-
packageAfüggősége van apackageB -
packageBfüggősége van apackageC
A sikeres telepítéshez packageAkódtárakat kell létrehoznia az SQL Serverhez packageB való hozzáadáskor packageC és packageA azzal egy időben. Ellenőrizze a szükséges csomagverziókat is.
A gyakorlatban a népszerű csomagok csomagfüggőségei bonyolultabbak, mint ez a példa. Előfordulhat például, hogy a ggplot2 több mint 30 csomagot igényel, és ezekhez a csomagokhoz további csomagokra lehet szükség, amelyek nem érhetők el a kiszolgálón. A hiányzó csomagok vagy a nem megfelelő csomagverziók a telepítés sikertelenségéhez vezethetnek.
Mivel nehéz lehet meghatározni az összes függőséget csak a csomagjegyzék megtekintéséből, használjon egy csomagot, például a miniCRAN-t a sikeres telepítéshez szükséges összes csomag azonosításához.
Töltse fel a célcsomagot és annak függőségeit. Minden fájlnak a kiszolgáló számára elérhető mappában kell lennie.
CREATE EXTERNAL LIBRARY packageA FROM (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\packageA.zip') WITH (LANGUAGE = 'R'); GO CREATE EXTERNAL LIBRARY packageB FROM (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\packageB.zip') WITH (LANGUAGE = 'R'); GO CREATE EXTERNAL LIBRARY packageC FROM (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\packageC.zip') WITH (LANGUAGE = 'R'); GOElőször telepítse a szükséges csomagokat.
Ha egy szükséges csomag már fel lett töltve a példányra, nem kell újból hozzáadnia. Csak ellenőrizze, hogy a meglévő csomag a megfelelő verzió-e.
A szükséges csomagok
packageC, éspackageBa megfelelő sorrendben vannak telepítve, amikorsp_execute_external_scriptelőször fut a csomagpackageAtelepítéséhez.Ha azonban valamelyik szükséges csomag nem érhető el, a célcsomag
packageAtelepítése meghiúsul.EXECUTE sp_execute_external_script @language = N'R', @script = N' # load the desired package packageA library(packageA) ';
Az SQL Server 2019 Python-nyelve (15.x) esetében a példa a következőre 'Python'való lecseréléssel 'R' is működik: .
Tár létrehozása bájtfolyamból
Ha nem tudja menteni a csomagfájlokat a kiszolgáló egyik helyére, a csomag tartalmát átadhatja egy változóban. Az alábbi példa egy kódtárat hoz létre úgy, hogy hexadecimális literálként adja át a biteket.
CREATE EXTERNAL LIBRARY customLibrary FROM (CONTENT = 0xABC123...) WITH (LANGUAGE = 'R');
Az SQL Server 2019 Python-nyelve (15.x) esetében a példa a következőre Pythonvaló lecseréléssel R is működik: .
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.
Meglévő csomagtár módosítása
A ALTER EXTERNAL LIBRARY DDL-utasítás használható új tártartalom hozzáadására vagy meglévő tártartalom módosítására. Meglévő kódtár módosításához engedély ALTER ANY EXTERNAL LIBRARY szükséges.
További információ: ALTER EXTERNAL LIBRARY.
Java-.jar-fájl hozzáadása adatbázishoz
Az alábbi példa egy külső .jar , adatbázishoz hívott customJar fájlt ad hozzá.
CREATE EXTERNAL LIBRARY customJar
FROM (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\customJar.jar')
WITH (LANGUAGE = 'Java');
Miután sikeresen feltöltötte a tárat a példányra, a felhasználó végrehajtja az sp_execute_external_script eljárást a kódtár telepítéséhez.
EXECUTE sp_execute_external_script
@language = N'Java',
@script = N'customJar.MyCLass.myMethod',
@input_data_1 = N'SELECT * FROM dbo.MyTable'
WITH RESULT SETS
(
(column1 INT)
);
Külső csomag hozzáadása Windowshoz és Linuxhoz egyaránt
Legfeljebb két <file_spec>, egy Windows és egy Linux rendszerhez használható lehetőséget adhat meg.
CREATE EXTERNAL LIBRARY lazyeval
FROM (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\packageA.zip', PLATFORM = WINDOWS),(CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\packageA.tar.gz', PLATFORM = LINUX)
WITH (LANGUAGE = 'R');
A sp_execute_external_script csomag telepítésekor attól függően, hogy az SQL Server-példány melyik platformon fut, a rendszer az adott platform kódtár-tartalmát használja.
EXECUTE sp_execute_external_script
@LANGUAGE = N'R',
@SCRIPT = N'
library(packageA)';