Kommentar
Å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 2016 (13.x) och senare versioner
Important
Stödet för strojové učenie Server (tidigare kallat R Server) upphörde den 1 juli 2022. Mer information finns i Vad händer med strojové učenie Server?
Den här artikeln beskriver hur du samlar in den data du behöver när du försöker lösa problem i SQL Server strojové učenie tjänster. Denna data kan vara användbar oavsett om du löser problem själv eller med hjälp av Microsoft kundsupport.
SQL Server-version och utgåva
SQL Server 2016 R Services är den första versionen av SQL Server som inkluderar integrerat R-stöd. SQL Server 2016 Service Pack 1 (SP1) innehåller flera stora förbättringar, inklusive möjligheten att köra externa skript. Om du använder SQL Server 2016 bör du överväga att installera SP1 eller senare.
SQL Server 2017 och senare har Python-språkintegration. Du kan inte få Python-funktionsintegration i tidigare versioner.
Beroende på vilken version av SQL Server du använder kan viss maskininlärningsfunktionalitet vara otillgänglig eller begränsad.
R-språk- och verktygsversioner
Generellt bestäms den version av Microsoft R som installeras när du väljer R Services-funktionen eller strojové učenie Services-funktionen av SQL Server-byggnumret. Om du uppgraderar eller patchar SQL Server måste du också uppgradera eller patcha dess R-komponenter.
För en lista över versioner och länkar till R-komponentnedladdningar, se Installera maskininlärningskomponenter utan internetåtkomst. På datorer med internetåtkomst identifieras och installeras den nödvändiga versionen av R automatiskt.
Det är möjligt att uppgradera R-serverkomponenterna separat från SQL Server-databasmotorn, i en process som kallas binding. Därför kan den version av R du använder när du kör R-kod i SQL Server skilja sig beroende på både den installerade versionen av SQL Server och om du har migrerat servern till den senaste R-versionen.
Bestäm R-versionen
Det enklaste sättet att bestämma R-versionen är att få runtime-egenskaperna genom att köra ett uttalande som följande:
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
# Transform R version properties to data.frame
OutputDataSet <- data.frame(
property_name = c("R.version", "Revo.version"),
property_value = c(R.Version()$version.string, Revo.version$version.string),
stringsAsFactors = FALSE)
# Retrieve properties like R.home, libPath & default packages
OutputDataSet <- rbind(OutputDataSet, data.frame(
property_name = c("R.home", "libPaths", "defaultPackages"),
property_value = c(R.home(), .libPaths(), paste(getOption("defaultPackages"), collapse=", ")),
stringsAsFactors = FALSE)
)
'
WITH RESULT SETS ((PropertyName nvarchar(100), PropertyValue nvarchar(4000)));
Tip
Om R Services inte fungerar, försök köra bara R-skriptdelen från RGui.
Som en sista utväg kan du öppna filer på servern för att avgöra vilken version som installerats. För att göra detta, hitta filen rlauncher.config för att få platsen för R-runtime och den aktuella arbetskatalogen. Vi rekommenderar att du skapar och öppnar en kopia av filen så att du inte av misstag ändrar några egenskaper.
SQL Server 2016
C:\Program Files\Microsoft SQL Server\MSSQL13.<instance_name\MSSQL\Binn\rlauncher.configSQL Server 2017
C:\Program Files\Microsoft SQL Server\MSSQL14.<instance_name>\MSSQL\Binn\rlauncher.config
För att få R-versionen och RevoScaleR-versionerna, öppna ett R-kommandoprompt eller öppna RGui:n som är kopplad till instansen.
SQL Server 2016
C:\Program Files\Microsoft SQL Server\MSSQL13.<instancename>\R_SERVICES\bin\x64\RGui.exeSQL Server 2017
C:\Program Files\Microsoft SQL Server\MSSQL14.<instance_name>\R_SERVICES\bin\x64\RGui.exe
R-konsolen visar versionsinformationen vid uppstart. Till exempel representerar följande version standardkonfigurationen för SQL Server 2017:
*Microsoft R Open 3.3.3*
*The enhanced R distribution from Microsoft*
*Microsoft packages Copyright (C) 2017 Microsoft*
*Loading Microsoft R Server packages, version 9.1.0.*
Python-versioner
Det finns flera sätt att få Python-versionen. Det enklaste sättet är att köra detta uttryck från Management Studio eller något annat SQL-frågeverktyg:
-- Get Python runtime properties:
exec sp_execute_external_script
@language = N'Python'
, @script = N'
import sys
import pkg_resources
OutputDataSet = pandas.DataFrame(
{"property_name": ["Python.home", "Python.version", "Revo.version", "libpaths"],
"property_value": [sys.executable[:-10], sys.version, pkg_resources.get_distribution("revoscalepy").version, str(sys.path)]}
)
'
with WITH RESULT SETS (SQL keywords) ((PropertyName nvarchar(100), PropertyValue nvarchar(4000)));
Om strojové učenie Services inte körs kan du avgöra vilken installerad Python version är genom att titta på pythonlauncher.config-filen. Vi rekommenderar att du skapar och öppnar en kopia av filen så att du inte av misstag ändrar några egenskaper.
- Endast för SQL Server 2017:
C:\Program Files\Microsoft SQL Server\MSSQL14.<instance_name>\MSSQL\Log\ExtensibilityLog\pythonlauncher.config - Få värdet för PYTHONHOME.
- Få värdet på den aktuella arbetskatalogen.
Anmärkning
Om du har installerat både Python och R i SQL Server 2017 delas arbetskatalogen och poolen av arbetarkonton för R- och Python-språken.
Finns det flera instanser av R eller Python installerade?
Kontrollera om mer än en kopia av R-biblioteken är installerad på datorn. Denna duplicering kan ske om:
- Under installationen väljer du både R-tjänster (In-Database) och R-server (fristående).
- Du installerar Microsoft R Client utöver SQL Server.
- En annan uppsättning R-bibliotek installerades genom att använda R Tools för Visual Studio, R Studio, Microsoft R Client eller en annan R-IDE.
- Datorn är värd för flera instanser av SQL Server, och mer än en instans använder maskininlärning.
Samma villkor gäller för Python.
Om du upptäcker att flera bibliotek eller runtimes är installerade, se till att du bara får de fel som är kopplade till Python- eller R-runtimes som används av SQL Server-instansen.
Ursprung till felen
De fel du ser när du försöker köra R-kod kan komma från någon av följande källor:
- SQL Server databasmotor, inklusive den lagrade proceduren sp_execute_external_script
- SQL Server Trusted Launchpad
- Andra komponenter i utbyggbarhetsramverket, inklusive R- och Python-uppskjutare samt satellitprocesser
- Leverantörer, såsom Microsoft Open Database Connectivity (ODBC)
- R-språk
När du arbetar med tjänsten för första gången kan det vara svårt att avgöra vilka meddelanden som kommer från vilka tjänster. Vi rekommenderar att du fångar inte bara den exakta meddelandetexten, utan också i vilket sammanhang du såg meddelandet. Observera klientprogramvaran du använder för att köra maskininlärningskod:
- Använder du Management Studio? En extern applikation?
- Kör du R-kod i en fjärrklient, eller direkt i en lagrad procedur?
SQL Server-loggfiler
Hämta den senaste SQL Server ERRORLOG. Den kompletta uppsättningen av felloggar består av filerna från följande standardloggkatalog:
SQL Server 2016
C:\Program Files\Microsoft SQL Server\MSSQL13.SQL2016\MSSQL\Log\ExtensibilityLogSQL Server 2017
C:\Program Files\Microsoft SQL Server\MSSQL14.SQL2016\MSSQL\Log\ExtensibilityLog
Anmärkning
Det exakta mappnamnet varierar beroende på instansens namn.
Fel som returneras av sp_execute_external_script
Få hela texten med felmeddelanden som returneras, om några, när du kör kommandot sp_execute_external_script.
För att utesluta R- eller Python-problem kan du köra detta skript, som startar R- eller Python-runtime och skickar data fram och tillbaka.
För R
exec sp_execute_external_script @language =N'R',
@script=N'OutputDataSet<-InputDataSet',
@input_data_1 =N'select 1 as hello'
with result sets (([hello] int not null));
go
För Python
exec sp_execute_external_script @language =N'Python',
@script=N'OutputDataSet= InputDataSet',
@input_data_1 =N'select 1 as hello'
with result sets (([hello] int not null));
go
Fel som genereras av utbyggbarhetsramverket
SQL Server genererar separata loggar för de externa skriptspråkets runtimes. Dessa fel genereras inte av Python- eller R-språket. De genereras från utökningskomponenterna i SQL Server, inklusive språkspecifika startprogram och deras satellitprocesser.
Du kan hämta dessa loggar från följande standardplatser:
SQL Server 2016
C:\Program Files\Microsoft SQL Server\MSSQL13.<instance_name>\MSSQL\Log\ExtensibilityLogSQL Server 2017
C:\Program Files\Microsoft SQL Server\MSSQL14.<instance_name>\MSSQL\Log\ExtensibilityLog
Anmärkning
Det exakta mappnamnet skiljer sig beroende på instansens namn. Beroende på din konfiguration kan mappen ligga på en annan enhet.
Till exempel är följande loggmeddelanden relaterade till utbyggbarhetsramverket:
LogonUser misslyckades för användarens MSSQLSERVER01
Detta kan indikera att arbetarkonton som kör externa skript inte kan komma åt instansen.
InitializePhysicalUsersPool misslyckades
Detta meddelande kan innebära att dina säkerhetsinställningar hindrar installationen från att skapa poolen av arbetarkonton som behövs för att köra externa skript.
Security Context Manager-initialiseringen misslyckades
Satellitsessionshanterarens initialisering misslyckades
Systemhändelser
- Öppna Windows Zobrazovač udalostí och sök i Systemhändelseloggen efter meddelanden som innehåller strängen Launchpad.
- Öppna filen ExtLaunchErrorlog och leta efter strängen ErrorCode. Gå igenom meddelandet som är kopplat till felkoden.
Till exempel är följande meddelanden vanliga systemfel som är relaterade till SQL Server expansionsramverk:
SQL Server Launchpad (MSSQLSERVER)-tjänsten startade inte på grund av följande fel: <text>
Tjänsten svarade inte på start- eller kontrollförfrågan i tid.
En timeout nåddes (120 000 millisekunder) medan man väntade på att SQL Server Launchpad (MSSQLSERVER)-tjänsten skulle ansluta sig.
Dumpar filer
Om du är kunnig i felsökning kan du använda dumpfilerna för att analysera ett fel i Launchpad.
- Hitta mappen som innehåller installationsloggarna för SQL Server. Till exempel, i SQL Server 2016 var standardsökvägen C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\Log.
- Öppna bootstrap-loggmappen som är specifik för utbyggbarhet.
- Om du behöver skicka in en supportförfrågan, lägg till hela innehållet i denna mapp i en zippad fil. Till exempel C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\Log\LOG\ExtensibilityLog.
Den exakta platsen kan skilja sig på ditt system, och det kan vara på en annan enhet än din C-enhet. Se till att hämta loggarna för den instans där maskininlärning är installerad.
Konfigurationsinställningar
Denna sektion listar ytterligare komponenter eller leverantörer som kan vara en källa till fel när du kör R- eller Python-skript.
Vilka nätverksprotokoll finns tillgängliga?
strojové učenie Services kräver följande nätverksprotokoll för intern kommunikation mellan utbyggbarhetskomponenter och för kommunikation med externa R- eller Python-klienter.
- Namngivna rör
- TCP/IP
Öppna SQL Server Configuration Manager för att avgöra om ett protokoll är installerat och, om det är installerat, för att avgöra om det är aktiverat.
Säkerhetskonfiguration och behörigheter
För arbetarkonton:
- I ovládací panel, öppna Users and Groups och hitta gruppen som används för att köra externa skriptjobb. Som standard är gruppen SQLRUserGroup.
- Kontrollera att gruppen existerar och att den innehåller minst ett arbetarkonto.
- I SQL Server Management Studio, välj instansen där R- eller Python-jobb ska köras, välj Säkerhet och avgör sedan om det finns en inloggning för SQLRUserGroup.
- Granska behörigheter för användargruppen.
För individuella användarkonton:
Avgör om instansen stödjer Mixed Mode-autentisering, endast SQL-inloggningar eller endast Windows authentication. Denna inställning påverkar dina R- eller Python-kodkrav.
För varje användare som behöver köra R-kod, bestäm vilken behörighetsnivå som krävs på varje databas där objekt ska skrivas från R, data ska nås eller objekt ska skapas.
För att möjliggöra skriptexekvering, skapa roller eller lägg till användare i följande roller vid behov:
- Alla utom db_owner: Kräver KÖR VILKET EXTERNT SKRIPT SOM HELST.
- db_datawriter: Att skriva resultat från R eller Python.
- db_ddladmin: Att skapa nya objekt.
- db_datareader: Att läsa data som används av R eller Python kod.
Observera om du ändrade några standardstartkonton när du installerade SQL Server 2016.
Om en användare behöver installera nya R-paket eller använda R-paket som installerats av andra användare, kan du behöva aktivera pakethantering på instansen och sedan tilldela ytterligare behörigheter.
Vilka mappar är föremål för låsning av antivirusprogram?
Antivirusprogram kan låsa mappar, vilket förhindrar både installation av maskininlärningsfunktioner och lyckad skriptexekvering. Ta reda på om några mappar i SQL Server-trädet är föremål för virusskanning.
Men när flera tjänster eller funktioner installeras på en instans kan det vara svårt att räkna upp alla möjliga mappar som används av instansen. Till exempel, när nya funktioner läggs till måste de nya mapparna identifieras och uteslutas.
Dessutom skapar vissa funktioner nya mappar dynamiskt under körning. Till exempel skapar in-memory OLTP-tabeller, lagrade procedurer och funktioner alla nya kataloger vid körning. Dessa mappnamn innehåller ofta GUID:er och kan inte förutsägas. SQL Server Trusted Launchpad skapar nya fungerande kataloger för R- och Python-skriptjobb.
Eftersom det kanske inte är möjligt att utesluta alla mappar som behövs av SQL Server-processen och dess funktioner, rekommenderar vi att du exkluderar hela SQL Server-instanskatalogträdet.
Är brandväggen öppen för SQL Server? Stöder instansen fjärranslutningar?
För att avgöra om SQL Server stödjer fjärranslutningar, se Konfigurera fjärrserveranslutningar.
Fastställ om en brandväggsregel har skapats för SQL Server. Av säkerhetsskäl kan det vid en standardinstallation vara omöjligt för fjärrklienter i R eller Python att ansluta till instansen. För mer information, se Felsökning anslutning till SQL Server.