Delen via


ALTER EXTERNAL LIBRARY (Transact-SQL)

Van toepassing op: SQL Server 2017 (14.x) en latere versies van Azure SQL Managed Instance

Hiermee wijzigt u de inhoud van een bestaande externe pakketbibliotheek.

Opmerking

In SQL Server 2017 worden R-taal en Windows-platform ondersteund. R-, Python- en externe talen op de Windows- en Linux-platforms worden ondersteund in SQL Server 2019 en hoger.

Opmerking

In Azure SQL Managed Instance kunt u een bibliotheek wijzigen door deze te verwijderen en vervolgens sqlmlutils te gebruiken om de gewijzigde versie te installeren. Zie Python-pakketten installeren met sqlmlutils en nieuwe R-pakketten met sqlmlutils installeren met sqlmlutils voor meer informatie over sqlmlutils.

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

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

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

Arguments

library_name

Hiermee geeft u de naam van een bestaande pakketbibliotheek. Bibliotheken zijn gericht op de gebruiker. Bibliotheeknamen moeten uniek zijn binnen de context van een specifieke gebruiker of eigenaar.

De bibliotheeknaam kan niet willekeurig worden toegewezen. Dat wil gezegd: u moet de naam gebruiken die de aanroepende runtime verwacht wanneer het pakket wordt geladen.

owner_name

Hiermee geeft u de naam op van de gebruiker of rol die eigenaar is van de externe bibliotheek.

file_spec

Hiermee geeft u de inhoud van het pakket voor een specifiek platform. Er wordt slechts één bestandsartefact per platform ondersteund.

Het bestand kan worden opgegeven in de vorm van een lokaal pad of netwerkpad. Als de optie voor de gegevensbron is opgegeven, kan de bestandsnaam een relatief pad zijn met betrekking tot de container waarnaar wordt verwezen in de EXTERNAL DATA SOURCE.

U kunt eventueel een besturingssysteemplatform voor het bestand opgeven. Er is slechts één bestandsartefact of -inhoud toegestaan voor elk besturingssysteemplatform voor een specifieke taal of runtime.

library_bits

Hiermee geeft u de inhoud van het pakket op als een letterlijke hextekst, vergelijkbaar met assembly's.

Deze optie is handig als u over de vereiste machtiging beschikt om een bibliotheek te wijzigen, maar bestandstoegang op de server is beperkt en u de inhoud niet kunt opslaan in een pad dat de server kan openen.

In plaats daarvan kunt u de inhoud van het pakket doorgeven als een variabele in binaire indeling.

platform = WINDOWS

Hiermee geeft u het platform voor de inhoud van de bibliotheek. Deze waarde is vereist bij het wijzigen van een bestaande bibliotheek om een ander platform toe te voegen. In SQL Server 2017 is Windows het enige ondersteunde platform.

perron

Hiermee geeft u het platform voor de inhoud van de bibliotheek. Deze waarde is vereist bij het wijzigen van een bestaande bibliotheek om een ander platform toe te voegen. In SQL Server 2019 zijn Windows en Linux de ondersteunde platforms.

LANGUAGE = 'R'

Hiermee geeft u de taal van het pakket. R wordt ondersteund in SQL Server 2017.

Taal

Hiermee geeft u de taal van het pakket. De waarde kan R of Python zijn in Azure SQL Managed Instance.

Taal

Hiermee geeft u de taal van het pakket. De waarde kan R, Python of de naam van een externe taal zijn (zie CREATE EXTERNAL LANGUAGE).

Opmerkingen

Voor de R-taal moeten pakketten worden voorbereid in de vorm van gezipte archiefbestanden met de .ZIP-extensie voor Windows. In SQL Server 2017 wordt alleen het Windows-platform ondersteund.

Voor de R-taal moeten pakketten worden voorbereid in de vorm van gezipte archiefbestanden met de extensie .ZIP.

Voor de Python-taal moet het pakket in een .whl- of .zip-bestand worden voorbereid in de vorm van een zip-archiefbestand. Als het pakket al een .zip bestand is, moet het worden opgenomen in een nieuw .zip bestand. Het rechtstreeks uploaden van een pakket als .whl- of .zip-bestand wordt momenteel niet ondersteund.

De ALTER EXTERNAL LIBRARY instructie uploadt alleen de bibliotheek-bits naar de database. De gewijzigde bibliotheek wordt geïnstalleerd wanneer een gebruiker code uitvoert in sp_execute_external_script (Transact-SQL) die de bibliotheek aanroept.

Een aantal pakketten, ook wel systeempakketten genoemd, worden vooraf geïnstalleerd in een SQL-exemplaar. Systeempakketten kunnen niet door de gebruiker worden toegevoegd, bijgewerkt of verwijderd.

Permissions

De dbo-gebruiker of een lid van de rol db_owner is standaard gemachtigd om ALTER EXTERNAL LIBRARY uit te voeren. Bovendien kan de gebruiker die de externe bibliotheek heeft gemaakt, die externe bibliotheek wijzigen.

Voorbeelden

In de volgende voorbeelden wordt een externe bibliotheek gewijzigd met de naam customPackage.

De inhoud van een bibliotheek vervangen met behulp van een bestand

In het volgende voorbeeld wordt een externe bibliotheek gewijzigd met de naam customPackage, met behulp van een gezipt bestand met de bijgewerkte bits.

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

Als u de bijgewerkte bibliotheek wilt installeren, voert u de opgeslagen procedure sp_execute_external_scriptuit.

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

Voor de Python-taal werkt het voorbeeld ook door te 'R' vervangen door 'Python'.

Een bestaande bibliotheek wijzigen met behulp van een bytestream

In het volgende voorbeeld wordt de bestaande bibliotheek gewijzigd door de nieuwe bits door te geven als een hexadecimale letterlijke waarde.

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

Voor de Python-taal werkt het voorbeeld ook door te 'R' vervangen door 'Python'.

Opmerking

In dit codevoorbeeld wordt alleen de syntaxis gedemonstreert; de binaire waarde in CONTENT = is afgekapt voor leesbaarheid en maakt geen werkende bibliotheek. De werkelijke inhoud van de binaire variabele zou veel langer zijn.

Zie ook

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