Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för: SQL Server 2017 (14.x) och senare versioner 
Av Azure SQL Managed Instance
Ändrar innehållet i ett befintligt externt paketbibliotek.
Anmärkning
I SQL Server 2017 stöds R-språk och Windows-plattform. R, Python och externa språk på Windows- och Linux-plattformarna stöds i SQL Server 2019 och senare.
Anmärkning
I Azure SQL Managed Instance kan du ändra ett bibliotek genom att ta bort det och sedan använda sqlmlutils för att installera den ändrade versionen. Mer information om sqlmlutils finns i Installera Python-paket med sqlmlutils och Installera nya R-paket med sqlmlutils.
Syntax för 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>
}
Syntax för 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 
}
Syntax för 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
Anger namnet på ett befintligt paketbibliotek. Bibliotek är begränsade till användaren. Biblioteksnamn måste vara unika i kontexten för en viss användare eller ägare.
Biblioteksnamnet kan inte tilldelas godtyckligt. Du måste alltså använda det namn som den anropande körningen förväntar sig när paketet läses in.
owner_name
Anger namnet på den användare eller roll som äger det externa biblioteket.
file_spec
Anger innehållet i paketet för en specifik plattform. Endast en filartefakt per plattform stöds.
Filen kan anges i form av en lokal sökväg eller nätverkssökväg. Om alternativet datakälla anges kan filnamnet vara en relativ sökväg med avseende på containern som refereras i EXTERNAL DATA SOURCE.
Du kan också ange en OS-plattform för filen. Endast en filartefakt eller innehåll tillåts för varje OS-plattform för ett visst språk eller en viss körning.
library_bits
Anger innehållet i paketet som en hexliteral, ungefär som sammansättningar.
Det här alternativet är användbart om du har den behörighet som krävs för att ändra ett bibliotek, men filåtkomsten på servern är begränsad och du inte kan spara innehållet på en sökväg som servern kan komma åt.
I stället kan du skicka paketinnehållet som en variabel i binärt format.
platform = WINDOWS
Anger plattformen för bibliotekets innehåll. Det här värdet krävs när du ändrar ett befintligt bibliotek för att lägga till en annan plattform. I SQL Server 2017 är Windows den enda plattform som stöds.
plattform
Anger plattformen för bibliotekets innehåll. Det här värdet krävs när du ändrar ett befintligt bibliotek för att lägga till en annan plattform. I SQL Server 2019 är Windows och Linux de plattformar som stöds.
LANGUAGE = 'R'
Anger paketets språk. R stöds i SQL Server 2017.
Språk
Anger paketets språk. Värdet kan vara R eller Python i Azure SQL Managed Instance.
Språk
Anger paketets språk. Värdet kan vara R, Python eller namnet på ett externt språk (se SKAPA EXTERNT SPRÅK).
Anmärkningar
För R-språket måste paket förberedas i form av zippade arkivfiler med .ZIP-tillägget för Windows. I SQL Server 2017 stöds endast Windows-plattformen.
När du använder en fil för R-språket måste paket förberedas i form av zippade arkivfiler med .ZIP-tillägget.
För Python-språket måste paketet i en .whl- eller .zip-fil förberedas i form av en zippad arkivfil. Om paketet redan är en .zip fil måste det ingå i en ny .zip fil. Det går för närvarande inte att ladda upp ett paket som .whl eller .zip fil direkt.
Instruktionen ALTER EXTERNAL LIBRARY laddar bara upp biblioteksbitarna till databasen. Det ändrade biblioteket installeras när en användare kör kod i sp_execute_external_script (Transact-SQL) som anropar biblioteket.
Ett antal paket, som kallas systempaket, är förinstallerade i en SQL-instans. Det går inte att lägga till, uppdatera eller ta bort systempaket av användaren.
Permissions
Som standard har dbo-användaren eller någon medlem i rollen db_owner behörighet att köra ALTER EXTERNAL LIBRARY. Dessutom kan användaren som skapade det externa biblioteket ändra det externa biblioteket.
Examples
I följande exempel ändras ett externt bibliotek med namnet customPackage.
Ersätt innehållet i ett bibliotek med hjälp av en fil
I följande exempel ändras ett externt bibliotek med namnet customPackage, med hjälp av en zippad fil som innehåller de uppdaterade bitarna.
ALTER EXTERNAL LIBRARY customPackage 
SET 
  (CONTENT = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\customPackage.zip')
WITH (LANGUAGE = 'R');
Om du vill installera det uppdaterade biblioteket kör du den lagrade proceduren sp_execute_external_script.
EXEC sp_execute_external_script 
@language =N'R', 
@script=N'library(customPackage)'
;
För Python-språket fungerar exemplet också genom att 'R' ersätta med 'Python'.
Ändra ett befintligt bibliotek med hjälp av en byteström
I följande exempel ändras det befintliga biblioteket genom att de nya bitarna skickas som en hexadecimal literal.
ALTER EXTERNAL LIBRARY customLibrary 
SET (CONTENT = 0xABC123...) WITH (LANGUAGE = 'R');
För Python-språket fungerar exemplet också genom att 'R' ersätta med 'Python'.
Anmärkning
Det här kodexemplet visar bara syntaxen. binärvärdet i CONTENT = har trunkerats för läsbarhet och skapar inte ett fungerande bibliotek. Det faktiska innehållet i den binära variabeln skulle vara mycket längre.
Se även
              SKAPA EXTERNT BIBLIOTEK (Transact-SQL)
              TA BORT EXTERNT BIBLIOTEK (Transact-SQL)
              sys.external_library_files
              sys.external_libraries