Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 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.
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.
Megjegyzés:
A felügyelt Azure SQL-példányban az sqlmlutils használatával telepíthet egy kódtárat. További információ: 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
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 RUser1 és RUser2 felhasználó egyenként és külön is feltöltheti az R-kódtárat ggplot2. Ha azonban az RUser1 egy újabb verziót ggplot2szeretne feltölteni, a második példányt másként kell elnevezni, vagy a meglévő tá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 egy külső szkriptet hajt végre, 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 RUser1 által egyenként feltö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 client_library_specifier> megadott< 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> egy hálózati helyet (UNC elérési utat) határoz meg, a rendszer a delegálási korlátozások miatt nem továbbítja az aktuális bejelentkezés megszemélyesítését a hálózati helyre. 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 a tárfájlokat nem másolhatja olyan helyre, amelyhez a kiszolgáló hozzáférhet.
PERON
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 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, 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 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 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.
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
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. Az összes többi felhasználó számára explicit módon engedélyt kell adnia nekik egy GRANT utasítással, amely jogosultságként a CREATE EXTERNAL LIBRARY értéket adja meg.
Az SQL Server 2019-ben a "CREATE EXTERNAL LIBRARY" (KÜLSŐ KÓDTÁR LÉTREHOZÁSA) engedély mellett a felhasználónak külső nyelvre is hivatkoznia kell ahhoz, hogy külső kódtárakat hozzon létre az adott külső nyelvhez.
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 a tár sikeresen fel lett töltve 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.
EXEC sp_execute_external_script
@language =N'R',
@script=N'library(customPackage)'
Az SQL Server 2019 Python-nyelve esetében a példa a következőre való lecseréléssel 'R''Python'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 packageA és packageC azzal egy időben. Ellenőrizze a szükséges csomagverziókat is.
A gyakorlatban a népszerű csomagok csomagfüggőségei általában sokkal bonyolultabbak, mint ez az egyszerű 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 az összes függőséget nehéz lehet meghatározni csak a csomagjegyzék megtekintésével, javasoljuk, hogy a miniCRAN-hez hasonló csomagokkal azonosítsa azokat a csomagokat, amelyekre szükség lehet a sikeres telepítéshez.
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.EXEC sp_execute_external_script @language =N'R', @script=N' # load the desired package packageA library(packageA) '
Az SQL Server 2019 Python-nyelve esetében a példa a következőre való lecseréléssel 'R''Python'is működik: .
Tár létrehozása bájtfolyamból
Ha nem tudja a csomagfájlokat a kiszolgálón lévő helyre menteni, 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 esetében a példa az "R" és a "Python" helyett is működik.
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.
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-fájlt ad customJar hozzá egy adatbázishoz.
CREATE EXTERNAL LIBRARY customJar
FROM (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\customJar.jar')
WITH (LANGUAGE = 'Java');
Miután a tár sikeresen fel lett töltve 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.
EXEC 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 fogja használni.
EXECUTE sp_execute_external_script
@LANGUAGE = N'R',
@SCRIPT = N'
library(packageA)'
Lásd még
KÜLSŐ KÓDTÁR MÓDOSÍTÁSA (Transact-SQL)
DROP EXTERNAL LIBRARY (Transact-SQL)
sys.external_library_files
sys.external_libraries