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 2019 (15.x) och senare versioner
Lär dig mer om utökningsarkitekturen som används för SQL Server Language Extensions, som gör att du kan köra extern kod i SQL Server. Java, Python och R stöds i SQL Server 2019 (15.x) och senare versioner. Koden körs i en språkkörningsmiljö som ett tillägg till kärndatabasmotorn.
Bakgrund
Syftet med utökningsramverket är att tillhandahålla ett gränssnitt mellan SQL Server och externa språk. Databasadministratörer kan upprätthålla säkerheten genom att köra ett betrott språk inom ett säkert ramverk som hanteras av SQL Server, samtidigt som dataexperter får åtkomst till företagsdata.
Alla externa språk som stöds kan köras genom att anropa en lagrad procedur och resultaten returneras som tabellresultat direkt till SQL Server. Det gör det enkelt att använda det externa språket från alla program som kan skicka en SQL-fråga och hantera resultaten.
Arkitekturdiagram
Arkitekturen är utformad så att extern kod körs i en separat process från SQL Server, men med komponenter som internt hanterar kedjan med begäranden för data och åtgärder på SQL Server.
Komponentarkitektur i Windows:
Komponentarkitektur i Linux:
Komponenterna omfattar en Launchpad-tjänst som används för att anropa externa körningar (till exempel Java) och biblioteksspecifik logik för inläsning av tolkar och bibliotek.
Launchpad
SQL Server Launchpad är en tjänst som hanterar livslängd, resurser och säkerhetsgränser för den externa process som ansvarar för skriptkörning. Detta liknar det sätt som fulltextindexering och frågetjänst startar en separat värd för bearbetning av fulltextfrågor. Launchpad-tjänsten kan endast starta betrodda startprogram som publicerats av Microsoft eller certifierats av Microsoft som uppfyller kraven för prestanda- och resurshantering.
SQL Server Launchpad-tjänsten körs under SQLRUserGroup som använder AppContainers för körningsisolering.
En separat SQL Server Launchpad-tjänst skapas för varje databasmotorinstans som du lägger till SQL Server Machine Language Extensions till. Det finns en Launchpad-tjänst för varje databasmotorinstans, så om du har flera instanser med stöd för externa skript har du en Launchpad-tjänst för var och en. En databasmotorinstans är bunden till den Launchpad-tjänst som skapats för den. Alla anrop av ett externt skript i en lagrad procedur eller T-SQL resulterar i att SQL Server-tjänsten anropar Launchpad-tjänsten som skapats för samma instans.
För att köra uppgifter på ett visst språk som stöds hämtar Launchpad ett skyddat arbetskonto från poolen och startar en satellitprocess för att hantera den externa körningen. Varje satellitprocess ärver användarkontot för Launchpad och använder arbetskontot under skriptkörningen. Om skriptet använder parallella processer skapas de under samma enda arbetskonto.
Kommunikationskanaler mellan komponenter
Kommunikationsprotokoll mellan komponenter och dataplattformar beskrivs i det här avsnittet.
TCP/IP
Som standard använder intern kommunikation mellan SQL Server och SQL-satelliten TCP/IP.
ODBC
Kommunikation mellan externa data science-klienter och en sql server-fjärrinstans använder ODBC. Kontot som skickar skriptjobben till SQL Server måste ha både behörighet att ansluta till instansen och köra externa skript.
Beroende på uppgiften kan kontot dessutom behöva följande behörigheter:
- Läsa data som används av jobbet
- Skriva data till tabeller: till exempel när resultat sparas i en tabell
- Skapa databasobjekt: till exempel om du sparar externt skript som en del av en ny lagrad procedur
När SQL Server används som beräkningskontext för skript som körs från en fjärrklient, och den körbara filen måste hämta data från en extern källa, används ODBC för tillbakaskrivning. SQL Server mappar identiteten för den användare som utfärdar fjärrkommandot till användarens identitet på den aktuella instansen och kör ODBC-kommandot med den användarens autentiseringsuppgifter. Anslutningssträngen som behövs för att utföra det här ODBC-anropet hämtas från klientkoden.
Andra protokoll
Processer som kan behöva arbeta i "segment" eller överföra data tillbaka till en fjärrklient kan också använda XDF-filformatet. Faktisk dataöverföring sker via kodade blobar.