Známé problémy s Pythonem a R ve službě SQL Server Machine Learning Services

platí pro: SQL Server 2016 (13.x) a novější verze

Důležité

Podpora pro Machine Learning Server (dříve označovaný jako R Server) skončila 1. července 2022. Další informace najdete v tématu Co se děje se službou Machine Learning Server?

Tento článek popisuje známé problémy nebo omezení komponent Pythonu a R, které jsou k dispozici ve službách SQL Server Machine Learning Services a SQL Server 2016 R Services.

Problémy s nastavením a konfigurací

Popis procesů souvisejících s počátečním nastavením a konfigurací najdete v tématu Instalace služby SQL Server Machine Learning Services. Obsahuje informace o upgradech, souběžné instalaci a instalaci nových komponent R nebo Pythonu.

Nekonzistentní výsledky výpočtů v MKL kvůli chybějící proměnné prostředí.

Platí pro: R_SERVER binární soubory 9.0, 9.1, 9.2 nebo 9.3.

R_SERVER používá knihovnu Intel Math Kernel Library (MKL). U výpočtů zahrnujících MKL může dojít k nekonzistentním výsledkům, pokud v systému chybí proměnná prostředí.

Nastavte proměnnou 'MKL_CBWR'=AUTO prostředí, aby se zajistila podmíněná numerická reprodukovatelnost v R_SERVER. Další informace naleznete v tématu Úvod do podmíněné numerické reprodukovatelnosti (CNR).

Řešení problému

  1. V Ovládacích panelech>vyberte Systém a zabezpečení>, Systém>, Pokročilá nastavení systému a Proměnné prostředí.

  2. Vytvořte novou proměnnou User nebo System.

    • Nastavit proměnnou na MKL_CBWRhodnotu .
    • Nastavte hodnotu na AUTO.
  3. Restartujte R_SERVER. Na SQL Serveru můžete restartovat službu Sql Server Launchpad.

Poznámka:

Pokud používáte SQL Server 2019 (15.x) v Linuxu, upravte nebo vytvořte .bash_profile v domovském adresáři uživatele a přidejte řádek export MKL_CBWR="AUTO". Spusťte tento soubor zadáním source .bash_profile do příkazového řádku Bash. Restartujte R_SERVER zadáním Sys.getenv() do příkazového řádku jazyka R.

Chyba modulu runtime skriptu R (SQL Server 2017 CU 5 – regrese CU 7)

Pro SQL Server 2017 (14.x) v kumulativních aktualizacích 5 až 7 existuje regrese v souboru rlauncher.config, kde cesta k dočasné složce obsahuje mezeru. Tato regrese je opravena v CU 8.

Chyba, která se zobrazí při spuštění skriptu jazyka R, obsahuje následující zprávy:

Nelze komunikovat s modulem runtime pro skript R. Zkontrolujte požadavky modulu runtime 'R'.

Zprávy STDERR z externího skriptu:

Závažná chyba: Nejde vytvořit R_TempDir

Řešení problému

Použijte CU 8, jakmile bude k dispozici. Případně můžete znovu vytvořit rlauncher.config spuštěním příkazu registerrext s odinstalací nebo instalací na příkazovém řádku se zvýšenými oprávněními.

<SQLInstancePath>\R_SERVICES\library\RevoScaleR\rxLibs\x64\RegisterRExt.exe /uninstall /sqlbinnpath:<SQLInstanceBinnPath> /userpoolsize:0 /instance:<SQLInstanceName>

<SQLInstancePath>\R_SERVICES\library\RevoScaleR\rxLibs\x64\RegisterRExt.exe /install /sqlbinnpath:<SQLInstanceBinnPath> /userpoolsize:0 /instance:<SQLInstanceName>

Následující příklad ukazuje příkazy s výchozí instancí "MSSQL14. MSSQLSERVER" nainstalovaný do C:\Program Files\Microsoft SQL Server\:

"C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library\RevoScaleR\rxLibs\x64\RegisterRext.exe" /uninstall /sqlbinnpath:"C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn" /userpoolsize:0 /instance:MSSQLSERVER

"C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library\RevoScaleR\rxLibs\x64\RegisterRext.exe" /install /sqlbinnpath:"C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn" /userpoolsize:0 /instance:MSSQLSERVER

Na řadič domény nejde nainstalovat funkce strojového učení SQL Serveru

Pokud se pokusíte nainstalovat sql Server 2016 (13.x) R Services nebo SQL Server Machine Learning Services na řadiči domény, instalace selže s těmito chybami:

Během procesu instalace funkce došlo k chybě.

Nejde najít skupinu s identitou

Kód chyby komponenty: 0x80131509

K selhání dochází, protože na řadiči domény nemůže služba vytvořit 20 místních účtů potřebných ke spuštění strojového učení. Obecně nedoporučujeme instalovat SQL Server na řadič domény. Další informace naleznete v bulletinu podpory 2032911.

Nainstalujte nejnovější verzi služby, abyste zajistili kompatibilitu s klientem Microsoft R.

Pokud nainstalujete nejnovější verzi klienta Microsoft R a použijete ho ke spuštění R na SQL Serveru ve vzdáleném výpočetním kontextu, může se zobrazit chyba podobná této:

Na počítači používáte verzi 9.x.x klienta Microsoft R, která není kompatibilní s Microsoft R Serverem verze 8.x.x. Stáhněte a nainstalujte kompatibilní verzi.

SQL Server 2016 (13.x) vyžaduje, aby knihovny R v klientovi přesně odpovídaly knihovnám R na serveru. Omezení bylo odebráno pro verze novější než R Server 9.0.1. Pokud ale dojde k této chybě, ověřte verzi knihoven R, které používá váš klient a server, a v případě potřeby aktualizujte klienta tak, aby odpovídal verzi serveru.

Verze jazyka R nainstalovaná se službou SQL Server R Services se aktualizuje při každé instalaci verze služby SQL Serveru. Abyste měli jistotu, že máte vždy nejaktuálnější verze součástí R, nezapomeňte nainstalovat všechny balíčky Service Pack.

Při spuštění R Serveru 8.0.3 na SQL Serveru 2016 se může zobrazit chybová zpráva: You are running version 9.0.0 of Microsoft R client on your computer, which is incompatible with the Microsoft R server version 8.0.3. Download and install a compatible version. Kompatibilita s Klientem Microsoft R 9.0.0 v SQL Serveru 2016 byla zajištěna v následujících opravách:

Abyste se vyhnuli problémům s balíčky R, můžete také upgradovat verzi knihoven R nainstalovaných na serveru změnou smlouvy o údržbě tak, aby používala zásady podpory moderního životního cyklu, jak je popsáno v další části. Když to uděláte, verze jazyka R, která je nainstalovaná s SQL Serverem, se aktualizuje podle stejného plánu, který se používá pro aktualizace Machine Learning Serveru (dříve Microsoft R Server).

Platí pro: SQL Server 2016 (13.x) R Services s R Serverem verze 9.0.0 nebo starší

V instalaci SQL Serveru 2017 CU 3 chybí součásti jazyka R

Byl zřízen omezený počet virtuálních počítačů Azure bez instalačních souborů R, které by měly být součástí SQL Serveru. Problém se týká virtuálních počítačů zřízených v období od 1. 1. 2018 do 23. 1. 2018. Tento problém může mít vliv také na místní instalace, pokud jste během období od 14. 5. 2018 do 23. 5. 2018 použili aktualizaci CU 3 pro SQL Server 2017 (14.x).

Byla poskytována verze služby, která obsahuje správnou verzi instalačních souborů jazyka R.

Pokud chcete nainstalovat komponenty a opravit SQL Server 2017 (14.x) CU 3, musíte odinstalovat CU 3 a přeinstalovat aktualizovanou verzi:

  1. Stáhněte si aktualizovaný instalační soubor CU 3, který obsahuje instalační programy jazyka R.
  2. Odinstalujte CU 3. V Ovládacích panelech vyhledejte Odinstalovat aktualizaci a pak vyberte "Hotfix 3015 pro SQL Server 2017 (KB4052987) (64bitová verze)". Pokračujte kroky odinstalace.
  3. Přeinstalujte aktualizaci CU 3 poklikáním na aktualizaci pro KB4052987, kterou jste stáhli: SQLServer2017-KB4052987-x64.exe. Postupujte podle pokynů k instalaci.

V offline instalacích SQL Serveru 2017 nebo novějších nejde nainstalovat komponenty Pythonu

Pokud nainstalujete předběžnou verzi SQL Serveru 2017 (14.x) na počítač bez přístupu k internetu, instalační program pravděpodobně nezobrazí stránku s výzvou k umístění stažených komponent Pythonu. V takovém případě můžete nainstalovat funkci Machine Learning Services, ale ne komponenty Pythonu.

Tento problém je opravený ve vydané verzi. Toto omezení se také nevztahuje na komponenty jazyka R.

Platí pro: SQL Server 2017 (14.x) s Pythonem

Upozornění na nekompatibilní verzi při připojování ke starší verzi služby SQL Server R Services z klienta pomocí SQL Serveru 2017

Při spuštění kódu jazyka R ve výpočetním kontextu SQL Serveru 2016 (13.x) se může zobrazit následující chyba:

Na počítači používáte verzi 9.0.0 klienta Microsoft R, která není kompatibilní s Microsoft R Serverem verze 8.0.3. Stáhněte a nainstalujte kompatibilní verzi.

Tato zpráva se zobrazí, pokud platí některý z následujících dvou výroků.

Pokud chcete zajistit, aby server a klient používali stejnou verzi, budete možná muset použít vazbu podporovanou pro Microsoft R Server 9.0 a novější verze, aby bylo možné upgradovat komponenty jazyka R v instancích SQL Serveru 2016 (13.x). Pokud chcete zjistit, jestli je pro vaši verzi služeb R k dispozici podpora pro upgrady, přečtěte si téma Upgrade instance služeb R pomocí SqlBindR.exe.

Platí pro: SQL Server 2016 (13.x) R Services s R Serverem verze 9.0.0 nebo starší

Instalace aktualizací služby SQL Server 2016 se nemusí podařit při pokusu nainstalovat novější verze komponent jazyka R.

Když nainstalujete kumulativní aktualizaci nebo nainstalujete aktualizaci Service Pack pro SQL Server 2016 (13.x) na počítač, který není připojený k internetu, průvodce instalací pravděpodobně nezobrazí výzvu, která umožňuje aktualizovat součásti jazyka R pomocí stažených souborů CAB. K tomuto selhání obvykle dochází, když bylo nainstalováno více komponent společně s databázovým strojem.

Jako alternativní řešení můžete nainstalovat verzi služby pomocí příkazového řádku a zadáním argumentu MRCACHEDIRECTORY , jak je znázorněno v tomto příkladu, který nainstaluje aktualizace CU 1:

C:\<path to installation media>\SQLServer2016-KB3164674-x64.exe /Action=Patch /IACCEPTROPENLICENSETERMS /MRCACHEDIRECTORY=<path to CU 1 CAB files>

Pokud chcete získat nejnovější instalační programy, přečtěte si téma Instalace komponent strojového učení bez přístupu k internetu.

Platí pro: SQL Server 2016 (13.x) R Services s R Serverem verze 9.0.0 nebo starší

Pokud se verze liší od verze R, služby Launchpad se nespustí.

Pokud sql Server R Services instalujete odděleně od databázového stroje a verze sestavení se liší, může se v protokolu událostí systému zobrazit následující chyba:

Službu Launchpad SQL Serveru se nepodařilo spustit kvůli následující chybě: Služba neodpověděla na žádost o spuštění nebo řízení včas.

K této chybě může dojít například v případě, že instalujete databázový stroj pomocí verze verze, použijete opravu pro upgrade databázového stroje a pak pomocí verze verze přidáte funkci R Services.

Chcete-li se tomuto problému vyhnout, použijte nástroj, jako je Správce souborů k porovnání verzí Launchpad.exe s verzí binárních souborů SQL, například sqldk.dll. Všechny komponenty by měly mít stejné číslo verze. Pokud upgradujete jednu komponentu, nezapomeňte použít stejný upgrade na všechny ostatní nainstalované součásti.

Vyhledejte launchpad ve Binn složce instance. Například ve výchozí instalaci SQL Serveru 2016 (13.x) může být cesta C:\Program Files\Microsoft SQL Server\MSSQL.13.InstanceNameMSSQL\Binn.

Vzdálené výpočetní kontexty jsou blokovány bránou firewall v instancích SQL Serveru, které běží na virtuálních počítačích Azure.

Pokud jste sql Server nainstalovali na virtuální počítač Azure, možná nebudete moct používat výpočetní kontexty, které vyžadují použití pracovního prostoru virtuálního počítače. Důvodem je, že brána firewall na virtuálních počítačích Azure ve výchozím nastavení obsahuje pravidlo, které blokuje síťový přístup pro místní uživatelské účty R.

Jako alternativní řešení na virtuálním počítači Azure otevřete bránu Windows Firewall s pokročilým zabezpečením, vyberte Odchozí pravidla a zakažte následující pravidlo: Blokovat síťový přístup pro místní uživatelské účty R v instanci SQL Serveru MSSQLSERVER. Pravidlo můžete také nechat povolené, ale vlastnost zabezpečení můžete změnit na Povolit, pokud je zabezpečená.

Předpokládaná autentizace v edici SQL Serveru 2016 Express

Když spouštíte úlohy R ze vzdálené pracovní stanice datové vědy pomocí integrovaného ověřování systému Windows, SQL Server používá implicitní ověřování ke generování místních volání ODBC, která mohou být vyžadována skriptem. Tato funkce ale nefungovala v buildu RTM sql Serveru 2016 (13.x) Express.

Pokud chcete tento problém vyřešit, doporučujeme upgradovat na novější verzi služby. Pokud upgrade není možné, jako alternativní řešení použijte přihlášení SQL ke spouštění vzdálených úloh R, které můžou vyžadovat vložená volání ODBC.

Platí pro: SQL Server 2016 (13.x) R Services Express Edition

Omezení výkonu při volání knihoven používaných SQL Serverem z jiných nástrojů

Knihovny strojového učení nainstalované pro SQL Server je možné zavolat z externí aplikace, například RGui. To může být nejpohodlnější způsob, jak provádět určité úlohy, jako je instalace nových balíčků nebo spouštění ad hoc testů na velmi krátkých vzorcích kódu. Mimo SQL Server ale může být výkon omezený.

Například i když používáte edici Enterprise SQL Serveru, R běží v režimu s jedním vláknem při spuštění kódu R pomocí externích nástrojů. Pokud chcete získat výhody výkonu SQL Serveru, zahajte připojení k SQL Serveru a pomocí sp_execute_external_script volejte modul runtime externího skriptu.

Obecně se vyhněte volání knihoven strojového učení, které SQL Server používá z externích nástrojů. Pokud potřebujete ladit kód R nebo Python, obvykle je to jednodušší udělat mimo SQL Server. Pokud chcete získat stejné knihovny, které jsou na SQL Serveru, můžete nainstalovat Microsoft R Client nebo SQL Server 2017 Machine Learning Server (samostatně).

SQL Server Data Tools nepodporuje oprávnění požadovaná externími skripty.

Pokud k publikování databázového projektu používáte Visual Studio nebo SQL Server Data Tools a některý z uživatelů má oprávnění specifická pro spuštění externího skriptu, může se zobrazit chyba, jako je tato:

Model TSQL: Při zpětné analýze databáze byla zjištěna chyba. Oprávnění se nerozpoznalo a nenaimportovalo se.

V současné době model DACPAC nepodporuje oprávnění používaná službami R Services nebo Machine Learning Services, například GRANT ANY EXTERNAL SCRIPTnebo EXECUTE ANY EXTERNAL SCRIPT. Tento problém bude opraven v pozdější verzi.

Jako alternativní řešení spusťte další GRANT příkazy ve skriptu po nasazení.

Spouštění externích skriptů je omezené kvůli výchozím hodnotám zásad správného řízení prostředků

V edici Enterprise můžete ke správě externích skriptových procesů použít fondy zdrojů. V některých raných sestaveních bylo maximální množství paměti, které bylo možné přidělit procesům R, omezeno na 20 procent. Proto pokud má server 32 GB paměti RAM, můžou spustitelné soubory R (RTerm.exe a BxlServer.exe) v jednom požadavku použít maximálně 6,4 GB.

Pokud narazíte na omezení prostředků, zkontrolujte aktuální výchozí nastavení. Pokud 20 procent nestačí, přečtěte si dokumentaci k SQL Serveru, kde se dozvíte, jak tuto hodnotu změnit.

Platí pro: SQL Server 2016 (13.x) R Services, edice Enterprise

Chyba při použití sp_execute_external_script bez libc++.so na Linuxu

Na čistém počítači s Linuxem, který nemá libc++.so nainstalovaný, spuštění sp_execute_external_script dotazu (SPEES) s Javou nebo externím jazykem selže, protože commonlauncher.so se nepodaří načíst libc++.so.

Například:

EXECUTE sp_execute_external_script @language = N'Java'
    , @script = N'JavaTestPackage.PassThrough'
    , @parallel = 0
    , @input_data_1 = N'select 1'
WITH RESULT SETS((col1 INT NOT NULL));
GO

To selže se zprávou podobnou následující:

Msg 39012, Level 16, State 14, Line 0

Unable to communicate with the runtime for 'Java' script for request id: 94257840-1704-45E8-83D2-2F74AEB46CF7. Please check the requirements of 'Java' runtime.

Protokoly mssql-launchpadd zobrazí chybovou zprávu podobnou následující:

Oct 18 14:03:21 sqlextmls launchpadd[57471]: [launchpad] 2019/10/18 14:03:21 WARNING: PopulateLauncher failed: Library /opt/mssql-extensibility/lib/commonlauncher.so not loaded. Error: libc++.so.1: cannot open shared object file: No such file or directory

Řešení problému

Můžete provést jedno z následujících alternativních řešení:

  1. Kopírujte libc++* z /opt/mssql/lib do výchozí systémové cesty /lib64

  2. Přidejte následující položky do /var/opt/mssql/mssql.conf, abyste odhalili cestu:

    [extensibility]
    readabledirectories = /opt/mssql
    

Platí pro: SQL Server 2019 (15.x) v Linuxu

Chyba instalace nebo upgradu na serverech s podporou FIPS

Pokud nainstalujete SQL Server 2019 (15.x) s funkcí Machine Learning Services a jazyková rozšíření nebo upgradujete instanci SQL Serveru na server s povoleným standardem FIPS (Federal Information Processing Standard), zobrazí se následující chyba:

Při instalaci funkce rozšiřitelnosti s chybovou zprávou došlo k chybě: Vytvoření appContaineru selhalo s chybovou zprávou NONE, stav Tato implementace není součástí kryptografických algoritmů ověřených rozhraním FIPS platformy Windows.

Řešení problému

Před instalací SQL Serveru 2019 (15.x) zakažte FIPS pomocí funkce Machine Learning Services a rozšíření jazyka nebo upgradujte instanci SQL Serveru. Po dokončení instalace nebo upgradu můžete rozhraní FIPS znovu spustit.

platí pro: SQL Server 2019 (15.x)

Knihovny R využívající konkrétní algoritmy, streamování nebo dělení

Problém

Následující omezení platí pro SQL Server 2017 (14.x) s upgradem modulu runtime. Tento problém platí pro edici Enterprise.

  • Paralelismus: RevoScaleR a MicrosoftML paralelismus vláken algoritmu v případě scénářů je omezen na maximálně dvě vlákna.
  • Streamování & dělení: Scénáře, které zahrnují parametr @r_rowsPerRead předaný do T-SQL sp_execute_external_script, se nepoužívají.
  • Streamovací rozdělení &: zdroje dat RevoScaleR a MicrosoftML (tj. ODBC, XDF) nepodporují čtení řádků v blocích pro tréninkové nebo vyhodnocovací scénáře. Tyto scénáře vždy přinášejí všechna data do paměti pro výpočty a operace jsou vázané na paměť.

Řešení

Nejlepším řešením je upgradovat na SQL Server 2019 (15.x). Po dokončení následujících úloh můžete i nadále používat SQL Server 2017 (14.x) s upgradem modulu runtime nakonfigurovaným pomocí RegisterRext.exe /configure.

  1. Upravte registr a vytvořte klíč Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\150 a přidejte hodnotu SharedCode s daty C:\Program Files\Microsoft SQL Server\150\Shared nebo sdíleným adresářem instance podle konfigurace.
  2. Vytvořte složku C:\Program Files\Microsoft SQL Server\150\Shared and copy instapi140.dll ze složky C:\Program Files\Microsoft SQL Server\140\Shared do nově vytvořené složky.
  3. Přejmenujte instapi140.dll na instapi150.dll v nové složce C:\Program Files\Microsoft SQL Server\150\Shared.

Důležité

Pokud provedete výše uvedené kroky, musíte před upgradem na novější verzi SQL Serveru ručně odebrat přidaný klíč.

Problémy s výkonem sdružování procesů ve službách ML Services (R a Python)

Tato část obsahuje známé problémy a alternativní řešení pro používání služeb ML (R a Python) v SQL Serveru.

Výkonnost studeného spuštění poolování procesů ve službách strojového učení

Při spuštění sp_execute_external_script spouští služba launchpad satelitní procesy, které spouští externí prostředí, jako je R a Python. K amortizaci nákladů na spuštění se vytvoří fond procesů, který lze použít při následném spuštění sp_execute_external_script. Tento fond procesů je specifický pro tohoto uživatele, databázi a použitý jazyk (R nebo Python ve službách ML).

První spuštění dotazu

Satelitní procesy je potřeba zahřát při sp_execute_external_script prvním spuštění nebo po určitou dobu nečinnosti (procesy se ukončí prostřednictvím úlohy čištění, pokud se po nějakou dobu nepoužívají). Studený začátek těchto procesů ve fondu může být pomalý (například kvůli omezením prostředků).

Řešení problému

Pokud je důležitý výkon prvního volání, doporučujeme udržovat dotazy v cache. Můžete například spustit úlohu na pozadí, která aktivuje jednoduchý sp_execute_external_script dotaz před vypršením platnosti procesů. Pokud například chcete zachovat dotazy R v teple, můžete pravidelně spouštět následující dotaz.

EXECUTE sp_execute_external_script @language = N'R', @script = N'';
GO

Velký počet souběžných dotazů

Pokud je počet souběžných spuštění sp_execute_external_script vyšší než počet aktivních procesů R/Python ve fondu, může být studený začátek přidávání dalších procesů do fondu pomalý (například kvůli omezením prostředků).

Řešení problému

K překonání problému s výkonem škálování je možné dávkovat více požadavků (například prostřednictvím připojení zpětné smyčky nebo přepsání skriptu pro zpracování více požadavků). Kromě toho je možné využít scénáře SQL PREDICT v reálném čase.

Problémy se spouštěním skriptů jazyka R

Tato část obsahuje známé problémy, které jsou specifické pro spouštění R na SQL Serveru, a také některé problémy související s knihovnami a nástroji R publikovanými Microsoftem, včetně RevoScaleR.

Další známé problémy, které můžou mít vliv na řešení R, najdete na webu Machine Learning Serveru .

Upozornění na odepření přístupu při spouštění skriptů R na SQL Serveru v nedefaultním umístění

Pokud byla instance SYSTÉMU SQL Server nainstalována do jiného než výchozího umístění, například mimo Program Files složku, vyvolá se upozornění ACCESS_DENIED při pokusu o spuštění skriptů, které nainstalují balíček. Například:

V normalizePath(path.expand(path), winslash, mustWork) : path[2]="~ExternalLibraries/R/8/1": Přístup byl odepřen.

Důvodem je, že se funkce R pokusí přečíst cestu a selže, pokud předdefinovaná skupina users SQLRUserGroup nemá přístup pro čtení. Upozornění, které se vyvolá, neblokuje spuštění aktuálního skriptu jazyka R, ale upozornění se může opakovat pokaždé, když uživatel spustí jakýkoli jiný skript jazyka R.

Pokud jste sql Server nainstalovali do výchozího umístění, k této chybě nedojde, protože všichni uživatelé Systému Windows mají oprávnění ke čtení složky Program Files .

Tento problém je vyřešený v nadcházející verzi služby. Jako alternativní řešení zadejte skupinu SQLRUserGroup s přístupem pro čtení pro všechny nadřazené složky ExternalLibraries.

Chyba serializace mezi starými a novými verzemi RevoScaleR

Když předáte model pomocí serializovaného formátu vzdálené instanci SQL Serveru, může se zobrazit chyba:

Chyba v memDecompress(data, typ = dekomprimace) vnitřní chyba -3 v memDecompress(2).

Tato chyba se vyvolá, pokud jste model uložili pomocí nejnovější verze serializační funkce, rxSerializeModel, ale instance SQL Serveru, ve které deserializujete model, má starší verzi rozhraní API RevoScaleR z SQL Serveru 2017 (14.x) CU 2 nebo starší.

Alternativním řešením je upgrade instance SQL Serveru 2017 (14.x) na CU 3 nebo novější.

Chyba se nezobrazí, pokud je verze rozhraní API stejná nebo pokud přesouváte model uložený se starší funkcí serializace na server, který používá novější verzi rozhraní API serializace.

Jinými slovy, pro operace serializace i deserializace použijte stejnou verzi RevoScaleR.

Vyhodnocování v reálném čase nezpracovává správně parametr learningRate ve stromových modelech a modelech doménové struktury.

Pokud vytvoříte model pomocí metody rozhodovacího stromu nebo rozhodovacího lesa a určíte rychlost učení, při použití sp_rxpredict nebo funkce SQL PREDICT se mohou ve srovnání s použitím rxPredict zobrazit nekonzistentní výsledky.

Příčinou je chyba v rozhraní API, které zpracovává serializované modely, a je omezena na learningRate parametr: například v rxBTrees nebo

Tento problém je vyřešený v nadcházející verzi služby.

Omezení nastavení affinity procesoru pro úlohy R

V počáteční verzi sestavení SQL Serveru 2016 (13.x) můžete nastavit spřažení procesoru pouze pro procesory v první skupině k-group. Pokud je například server 2-socketový se dvěma k-skupinami, použijí se pro procesy R pouze procesory z první skupiny k. Stejné omezení platí při konfiguraci zásad správného řízení prostředků pro úlohy skriptů jazyka R.

Tento problém je opravený v sql Serveru 2016 (13.x) Service Pack 1. Doporučujeme upgradovat na nejnovější verzi služby.

Platí pro: SQL Server 2016 (13.x) R Services (verze RTM)

Změny typů sloupců nelze provést při čtení dat ve výpočetním kontextu SQL Serveru.

Pokud je výpočetní kontext nastavený na instanci SQL Serveru, nemůžete ke změně datového typu sloupců v kódu R použít argument colClasses (nebo jiné podobné argumenty).

Například následující příkaz by výsledkem chyby, pokud sloupec CRSDepTimeStr ještě není celé číslo:

data <- RxSqlServerData(
  sqlQuery = "SELECT CRSDepTimeStr, ArrDelay FROM AirlineDemoSmall",
  connectionString = connectionString,
  colClasses = c(CRSDepTimeStr = "integer"))

Alternativním řešením je přepsat dotaz SQL tak, aby používal CAST nebo CONVERT aby se data prezentují do jazyka R pomocí správného datového typu. Obecně platí, že výkon je lepší, když pracujete s daty pomocí SQL, a ne změnou dat v kódu R.

Platí pro: SQL Server 2016 (13.x) R Services

Omezení velikosti serializovaných modelů

Když model uložíte do tabulky SQL Serveru, musíte model serializovat a uložit v binárním formátu. Teoreticky maximální velikost modelu, který lze uložit s touto metodou, je 2 GB, což je maximální velikost varbinárních sloupců v SQL Serveru.

Pokud potřebujete používat větší modely, jsou k dispozici následující alternativní řešení:

  • Proveďte kroky ke zmenšení velikosti modelu. Některé opensourcové balíčky R obsahují v objektu modelu velké množství informací a většinu těchto informací je možné odebrat pro nasazení.

  • Pomocí výběru funkce odeberte nepotřebné sloupce.

  • Pokud používáte opensourcový algoritmus, zvažte podobnou implementaci pomocí odpovídajícího algoritmu v MicrosoftML nebo RevoScaleR. Tyto balíčky jsou optimalizované pro scénáře nasazení.

  • Po racionalizaci modelu a zmenšení velikosti pomocí předchozích kroků zjistěte, jestli se pomocí funkce memCompress v základním jazyce R dá před předáním do SQL Serveru zmenšit velikost modelu. Tato možnost je nejlepší, když je model blízko limitu 2 GB.

  • U větších modelů můžete místo použití sloupce varbinary použít funkci Souborová tabulka SQL Serveru k uložení modelů.

    Chcete-li použít FileTables, musíte přidat výjimku brány firewall, protože data uložená v FileTables jsou spravována ovladačem systému souborů Filestream na SQL Serveru a výchozí pravidla brány firewall blokují síťový přístup k souborům. Další informace naleznete v tématu Povolení předpokladů pro FileTable.

    Jakmile povolíte FileTable, k zápisu modelu získáte cestu z SQL pomocí rozhraní FileTable API a pak do daného umístění zapíšete model z vašeho kódu. Když potřebujete přečíst model, získáte cestu z SQL Serveru a pak model zavoláte pomocí cesty ze skriptu. Další informace naleznete v tématu Přístup k FileTables pomocí API pro vstup a výstup souborů.

Vyhněte se vymazání pracovních prostorů při spouštění kódu R ve výpočetním kontextu SQL Serveru

Pokud pomocí příkazu R vymažete pracovní prostor objektů při spouštění kódu jazyka R ve výpočetním kontextu SQL Serveru nebo pokud pracovní prostor vymažete jako součást skriptu jazyka R volaného pomocí sp_execute_external_script, může se zobrazit tato chyba: objekt pracovního prostoru revoScriptConnection nebyl nalezen.

revoScriptConnection je objekt v pracovním prostoru jazyka R, který obsahuje informace o relaci jazyka R, která je volána z SQL Serveru. Pokud ale kód R obsahuje příkaz k vymazání pracovního prostoru (například rm(list=ls()))všechny informace o relaci a dalších objektech v pracovním prostoru jazyka R, vymažou se také.

Alternativním řešením je vyhnout se nerozlišujícímu vymazání proměnných a dalších objektů při spouštění R na SQL Serveru. I když je vymazání pracovního prostoru běžné při práci v konzole R, může to mít nezamýšlené důsledky.

  • Pokud chcete odstranit konkrétní proměnné, použijte například funkci R remove : remove('name1', 'name2', ...)
  • Pokud se má odstranit více proměnných, uložte názvy dočasných proměnných do seznamu a proveďte pravidelné uvolňování paměti.

Omezení dat, která lze poskytnout jako vstup do skriptu jazyka R

Ve skriptu jazyka R nemůžete použít následující typy výsledků dotazu:

  • Data z dotazu Transact-SQL, který odkazuje na sloupce AlwaysEncrypted.

  • Data z dotazu Transact-SQL, který odkazuje na maskované sloupce.

    Pokud potřebujete použít maskovaná data ve skriptu jazyka R, je možným alternativním řešením vytvořit kopii dat v dočasné tabulce a místo toho tato data použít.

Použití řetězců jako faktorů může vést ke snížení výkonu.

Použití proměnných typu řetězce jako faktorů může výrazně zvýšit množství paměti používané pro operace R. Jedná se o známý problém s jazykem R obecně a existuje mnoho článků o tomto tématu. Viz například Faktory nejsou prvotřídními občany v R, John Mount, in R-bloggers) nebo stringsAsFactors: Neautorizovaný životopis, Roger Peng.

I když problém není specifický pro SQL Server, může výrazně ovlivnit výkon kódu R spuštěného na SQL Serveru. Řetězce jsou obvykle uloženy jako varchar nebo nvarchar, a pokud sloupec řetězcových dat má mnoho jedinečných hodnot, proces interně převádění těchto hodnot na celá čísla a zpět na řetězce jazyka R může dokonce vést k chybám přidělení paměti.

Pokud pro jiné operace nepotřebujete datový typ řetězce, mapování řetězcových hodnot na číselný datový typ (celé číslo) v rámci přípravy dat by bylo výhodné z hlediska výkonu a škálování.

Diskuzi o tomto problému a další tipy najdete v tématu Výkon pro služby R – optimalizace dat.

Argumenty varsToKeep a varsToDrop nejsou podporovány pro zdroje dat SQL Serveru.

Když použijete funkci rxDataStep k zápisu výsledků do tabulky, použití varsToKeep a varsToDrop je praktický způsob, jak určit sloupce, které chcete zahrnout nebo vyloučit jako součást operace. Tyto argumenty ale nejsou podporované pro zdroje dat SQL Serveru.

Omezená podpora datových typů SQL v sp_execute_external_script

Ne všechny datové typy podporované v SQL je možné použít v jazyce R. Jako alternativní řešení zvažte přetypování nepodporovaného datového typu na podporovaný datový typ před předáním dat do sp_execute_external_script.

Další informace najdete v tématu Knihovny jazyka R a datové typy.

Možné poškození datového řetězce při použití řetězců Unicode ve sloupcích varchar

Předání dat Unicode ve sloupcích varchar z SQL Serveru do R/Pythonu může vést k poškození řetězce. Důvodem je kódování těchto řetězců Unicode v kolacích SQL Serveru nemusí odpovídat výchozímu kódování UTF-8 použitému v R/Pythonu.

Pokud chcete odeslat veškerá data řetězců jiného typu než ASCII z SQL Serveru do R/Pythonu, použijte kódování UTF-8 (dostupné v SQL Serveru 2019 (15.x) nebo použijte pro stejný typ nvarchar .

Lze vrátit pouze jednu hodnotu typu raw z sp_execute_external_script

Při vrácení binárního datového typu ( nezpracovaný datový typ R) z jazyka R musí být hodnota odeslána ve výstupním datovém rámci.

U jiných datových typů než nezpracovaných můžete vrátit hodnoty parametrů spolu s výsledky uložené procedury přidáním klíčového slova OUTPUT. Další informace najdete v tématu Parametry.

Pokud chcete použít více výstupních sad, které obsahují hodnoty typu raw, jedním z možných alternativních řešení je provést více volání uložené procedury nebo odeslat sady výsledků zpět na SQL Server pomocí rozhraní ODBC.

Ztráta přesnosti

Vzhledem k tomu, že Transact-SQL a R podporují různé datové typy, mohou číselné datové typy během převodu trpět ztrátou přesnosti.

Další informace o implicitní převodu datových typů naleznete v tématu Knihovny jazyka R a datové typy.

Chyba rozsahu proměnné při použití parametru transformFunc

Chcete-li transformovat data při modelování, můžete předat transformFunc argument funkce, například rxLinmod nebo rxLogit. Volání vnořených funkcí ale můžou vést k chybám v výpočetním kontextu SQL Serveru, i když volání fungují správně v místním výpočetním kontextu.

Ukázková sada dat pro analýzu nemá žádné proměnné.

Předpokládejme například, že jste definovali dvě funkce f a g, v místním globálním prostředí, a g volá f. Ve vzdálených nebo distribuovaných voláních zahrnujících g, může volání na g selhat s touto chybou, protože f nelze najít, přestože jste pro vzdálené volání předali jak f, tak g.

Pokud narazíte na tento problém, můžete ho vyřešit vložením definice f do vaší definice g kdekoli před tím, než by g běžně volal f.

Například:

f <- function(x) { 2*x * 3 }
g <- function(y) {
              a <- 10 * y
               f(a)
}

Pokud se chcete této chybě vyhnout, přepište definici následujícím způsobem:

g <- function(y){
              f <- function(x) { 2*x +3}
              a <- 10 * y
              f(a)
}

Import a manipulace s daty pomocí RevoScaleR

Při čtení sloupců varchar z databáze se odstraní mezery. Aby se tomu zabránilo, vložte řetězce do neprázdných znaků.

Pokud se k vytváření databázových tabulek obsahujících sloupce rxDataStep používají funkce, odhaduje se šířka sloupce na základě vzorku dat. Pokud se šířka může lišit, může být nutné vložit všechny řetězce na společnou délku.

Použití transformace k změně datového typu proměnné není podporováno při opakovaném volání rxImport nebo rxTextToXdf k importu a připojení řádků, při kombinování více vstupních souborů do jednoho souboru .xdf.

Omezená podpora pro rxExec

V SQL Serveru 2016 (13.x) rxExec lze funkci, kterou poskytuje balíček RevoScaleR, používat pouze v režimu s jedním vláknem.

Zvýšení maximální velikosti parametru pro podporu rxGetVarInfo

Pokud používáte datové sady s extrémně velkým počtem proměnných (například více než 40 000), nastavte max-ppsize příznak při spuštění jazyka R, aby využíval funkce, jako je rxGetVarInfo. Příznak max-ppsize určuje maximální velikost zásobníku ochrany ukazatele.

Pokud používáte konzolu R (například RGui.exe nebo RTerm.exe), můžete nastavit hodnotu max-ppsize na 5 00000 zadáním:

R --max-ppsize=500000

Problémy s funkcí rxDTree

Funkce rxDTree v současné době nepodporuje transformace ve vzorcích. Zejména použití F() syntaxe pro vytváření faktorů za běhu není podporováno. Číselná data se ale automaticky řadí do skupin.

Seřazené faktory jsou považovány za faktory ve všech funkcích analýzy RevoScaleR s výjimkou rxDTree.

data.table jako OutputDataSet v jazyce R

Použití data.table jako OutputDataSet v R není podporováno v SQL Serveru 2017 (14.x) kumulativní aktualizaci 13 (CU 13) a dříve. Může se zobrazit následující zpráva:

Msg 39004, Level 16, State 20, Line 2
A 'R' script error occurred during execution of
'sp_execute_external_script' with HRESULT 0x80004004.
Msg 39019, Level 16, State 2, Line 2
An external script error occurred:
Error in alloc.col(newx) :
  Internal error: length of names (0) is not length of dt (11)
Calls: data.frame ... as.data.frame -> as.data.frame.data.table -> copy -> alloc.col

Error in execution.  Check the output for more information.
Error in eval(expr, envir, enclos) :
  Error in execution.  Check the output for more information.
Calls: source -> withVisible -> eval -> eval -> .Call
Execution halted

data.table jako OutputDataSet v R je v SQL Serveru 2017 (14.x) podporována od kumulativní aktualizace 14 (CU 14) a novějších.

Spuštění dlouhého skriptu selže při instalaci knihovny

Pokud je spuštěna dlouhotrvající relace externího skriptu a současně se dbo pokouší instalovat knihovnu do jiné databáze, může to vést k ukončení skriptu.

Například spuštění tohoto externího master skriptu pro databázi:

USE MASTER
DECLARE @language nvarchar(1) = N'R'
DECLARE @script nvarchar(max) = N'Sys.sleep(100)'
DECLARE @input_data_1 nvarchar(max) = N'select 1'
EXEC sp_execute_external_script @language = @language, @script = @script, @input_data_1 = @input_data_1 with result sets none
go

Zatímco dbo paralelně nainstaluje knihovnu v LibraryManagementFunctional:

USE [LibraryManagementFunctional]
go

CREATE EXTERNAL LIBRARY [RODBC] FROM (CONTENT = N'/home/ani/var/opt/mssql/data/RODBC_1.3-16.tar.gz') WITH (LANGUAGE = 'R')
go

DECLARE @language nvarchar(1) = N'R'
DECLARE @script nvarchar(14) = N'library(RODBC)'
DECLARE @input_data_1 nvarchar(8) = N'select 1'
EXEC sp_execute_external_script @language = @language, @script = @script, @input_data_1 = @input_data_1
go

Předchozí dlouhotrvající externí skript pro master databázi se ukončí s následující chybovou zprávou:

Při provádění příkazu 'sp_execute_external_script' došlo k chybě skriptu 'R' s HRESULT 0x800704d4.

Řešení problému

Neprovádějte instalaci knihovny současně s dlouhotrvajícím dotazem. Nebo po dokončení instalace znovu spusťte dlouhotrvající dotaz.

Platí pro: POUZE SQL Server 2019 (15.x) v clusterech s Linuxem a velkými objemy dat

SQL Server přestane reagovat při spouštění skriptů jazyka R obsahujících paralelní spuštění

SQL Server 2019 (15.x) obsahuje regresi, která ovlivňuje skripty R, které používají paralelní spouštění. Mezi příklady patří použití rxExec s výpočetním kontextem RxLocalPar a skripty, které používají paralelní balíček. Příčinou tohoto problému jsou chyby, se kterými se setkává paralelní balíček při zápisu do null zařízení během provádění v SQL Serveru.

platí pro: SQL Server 2019 (15.x).

Přesnost ztráty u peněžních, číselných, desetinných a velkých celých čísel datových typů

Spuštění skriptu jazyka R s sp_execute_external_script umožňuje použití peněžních, číselných, desetinných a bigint datových typů jako vstupní data. Vzhledem k tomu, že jsou převedeny na číselný typ jazyka R, trpí ztrátou přesnosti u hodnot, které jsou velmi vysoké nebo mají desetinnou hodnotu.

  • money: Někdy by hodnoty centu byly nepřesné a bylo by vydáno upozornění: Upozornění: Nelze přesně znázorňovat hodnoty centů.
  • numeric/decimal: sp_execute_external_script skript v R nepodporuje celý rozsah těchto datových typů a změnil by posledních pár desetinných míst, zejména těch s zlomkovými částmi.
  • bigint: R podporuje pouze 53bitové celá čísla a pak začne mít ztrátu přesnosti.

Problémy s funkcí rxExecBy – funkce rxExecBy nemůže najít nainstalovaný balíček

rxExecBy Při zavolání funkce se spustí nový proces modulu runtime jazyka R. Tento nový proces neobsahuje aktualizované cesty knihovny, proto se balíčky nainstalované v jiných umístěních než výchozí cesta knihovny během provádění nenajdou.

Řešení problému

Cesta k balíčkům R musí být explicitně aktualizována. Předpokládejme, že balíčky jsou nainstalovány v cestě k externím knihovnám. K aktualizaci cesty knihovny je možné použít následující skript jazyka R: .libPaths(c(Sys.getenv("MRS_EXTLIB_USER_PATH"), Sys.getenv("MRS_EXTLIB_SHARED_PATH"), .libPaths()))

Problémy se spouštěním skriptů Pythonu

Tato část obsahuje známé problémy specifické pro spuštění Pythonu na SQL Serveru a také problémy související s balíčky Pythonu publikovanými Microsoftem, včetně revoscalepy a microsoftml.

Volání předtrénovaného modelu selže, pokud je cesta k modelu příliš dlouhá

Pokud jste předtrénované modely nainstalovali v dřívější verzi SQL Serveru 2017 (14.x), může být úplná cesta k souboru modelu příliš dlouhá na to, aby ho Python přečetl. Toto omezení je opravené v pozdější verzi služby.

Existuje několik možných alternativních řešení:

  • Při instalaci předem natrénovaných modelů zvolte vlastní umístění.
  • Pokud je to možné, nainstalujte instanci SQL Serveru do vlastní instalační složky s kratší cestou, například C:\SQL\MSSQL14.MSSQLSERVER.
  • Pomocí nástroje Windows Fsutil vytvořte pevný odkaz, který mapuje soubor modelu na kratší cestu.
  • Aktualizujte na nejnovější verzi služby.

Chyba při ukládání serializovaného modelu na SQL Server

Když předáte model vzdálené instanci SQL Serveru a pokusíte se přečíst binární model pomocí rx_unserialize funkce v revoscalepy, může se zobrazit chyba:

NameError: název "rx_unserialize_model" není definován.

Tato chyba se vyvolá, pokud jste model uložili pomocí nedávné verze serializační funkce, ale instance SQL Serveru, ve které deserializujete model nerozpozná rozhraní API serializace.

Pokud chcete tento problém vyřešit, upgradujte instanci SQL Serveru 2017 (14.x) na CU 3 nebo novější.

Selhání inicializace varbinární proměnné způsobí chybu v BxlServer

Pokud v SQL Serveru sp_execute_external_scriptspustíte kód Pythonu a kód obsahuje výstupní proměnné typu varbinary(max), varchar(max) nebo podobné typy, musí být proměnná inicializována nebo nastavena jako součást skriptu. V opačném případě komponenta výměny dat, BxlServer, vyvolá chybu a přestane fungovat.

Toto omezení bude opraveno v nadcházející verzi služby. Jako alternativní řešení se ujistěte, že se proměnná inicializuje ve skriptu Pythonu. Můžete použít libovolnou platnou hodnotu, jak je znázorněno v následujících příkladech:

declare @b varbinary(max);
exec sp_execute_external_script
  @language = N'Python'
  , @script = N'b = 0x0'
  , @params = N'@b varbinary(max) OUTPUT'
  , @b = @b OUTPUT;
go
declare @b varchar(30);
exec sp_execute_external_script
  @language = N'Python'
  , @script = N' b = ""  '
  , @params = N'@b varchar(30) OUTPUT'
  , @b = @b OUTPUT;
go

Upozornění telemetrie při úspěšném spuštění kódu Pythonu

Od VERZE SQL Server 2017 (14.x) CU 2 se může zobrazit následující zpráva, i když se kód Pythonu jinak úspěšně spustí:

Zprávy STDERR z externího skriptu:~PYTHON_SERVICES\lib\site-packages\revoscalepy\utils\RxTelemetryLoggerSyntaxWarning: telemetry_state se používá před globální deklarací.

Tento problém je opravený v kumulativní aktualizaci 3 (CU 3) sql Serveru 2017 (14.x).

Číselné, desetinné a peněžní datové typy se nepodporují.

Počínaje SQL Serverem 2017 (14.x), konkrétně od kumulativní aktualizace 12 (CU 12), nejsou při použití Pythonu s sp_execute_external_script podporovány datové typy numeric, decimal a money v WITH RESULT SETS. Mohou se zobrazit následující zprávy:

[Kód: 39004, Stav SQL: S1000] Během provádění 'sp_execute_external_script' došlo k chybě skriptu 'Python' s HRESULT 0x80004004.

[Kód: 39019, STAV SQL: S1000] Došlo k chybě externího skriptu:

Chyba SqlSatelliteCall: Nepodporovaný typ ve výstupním schématu Podporované typy: bit, smallint, int, datetime, smallmoney, real a float. char, varchar jsou částečně podporovány.

Tato oprava byla opravena v kumulativní aktualizaci 14 (CU 14) SQL Serveru 2017 (14.x).

Chybná chyba interpreta při instalaci balíčků Pythonu s pip v Linuxu

Pokud se pokusíte použít pip na SQL Serveru 2019 (15.x). Například:

/opt/mssql/mlservices/runtime/python/bin/pip -h

Zobrazí se tato chyba:

bash: /opt/mssql/mlservices/runtime/python/bin/pip: /opt/microsoft/mlserver/9.4.7/bin/python/python: chybný interpret: Žádný takový soubor nebo adresář

Řešení problému

Nainstalujte pip z Python Package Authority (PyPA):

wget 'https://bootstrap.pypa.io/get-pip.py'
/opt/mssql/mlservices/bin/python/python ./get-pip.py

Platí pro: SQL Server 2019 (15.x) v Linuxu

Nelze nainstalovat balíčky Pythonu pomocí pip po instalaci SQL Serveru 2019 ve Windows.

Po instalaci SQL Serveru 2019 (15.x) ve Windows se pokus o instalaci balíčku Pythonu přes pip z příkazového řádku DOS nezdaří. Například:

pip install quantfolio

Tato chyba vrátí následující chybu:

pip je nakonfigurován s adresami, které vyžadují protokol TLS/SSL, ale v Pythonu není dostupný modul SSL.

Jedná se o problém specifický pro balíček Anaconda. Opraví se v nadcházející servisní aktualizaci.

Řešení problému

Zkopírujte následující soubory:

  • libssl-1_1-x64.dll
  • libcrypto-1_1-x64.dll

ze složky
C:\Program Files\Microsoft SQL Server\MSSSQL15.MSSQLSERVER\PYTHON_SERVICES\Library\bin

do složky
C:\Program Files\Microsoft SQL Server\MSSSQL15.MSSQLSERVER\PYTHON_SERVICES\DLLs

Pak otevřete nový příkazový řádek systému DOS.

Platí pro: SQL Server 2019 (15.x) na Windows

Chyba při použití sp_execute_external_script bez libc++abo.so na Linuxu

Na čistém počítači s Linuxem, který nemá libc++abi.so nainstalovaný, selže spuštění sp_execute_external_script dotazu (SPEES) s chybou "Žádný takový soubor nebo adresář".

Například:

EXEC sp_execute_external_script
    @language = N'Python'
    , @script = N'
OutputDataSet = InputDataSet'
    , @input_data_1 = N'select 1'
    , @input_data_1_name = N'InputDataSet'
    , @output_data_1_name = N'OutputDataSet'
    WITH RESULT SETS (([output] int not null));
Msg 39012, Level 16, State 14, Line 0
Unable to communicate with the runtime for 'Python' script for request id: 94257840-1704-45E8-83D2-2F74AEB46CF7. Please check the requirements of 'Python' runtime.
STDERR message(s) from external script:

Failed to load library /opt/mssql-extensibility/lib/sqlsatellite.so with error libc++abi.so.1: cannot open shared object file: No such file or directory.

SqlSatelliteCall error: Failed to load library /opt/mssql-extensibility/lib/sqlsatellite.so with error libc++abi.so.1: cannot open shared object file: No such file or directory.
STDOUT message(s) from external script:
SqlSatelliteCall function failed. Please see the console output for more information.
Traceback (most recent call last):
  File "/opt/mssql/mlservices/libraries/PythonServer/revoscalepy/computecontext/RxInSqlServer.py", line 605, in rx_sql_satellite_call
    rx_native_call("SqlSatelliteCall", params)
  File "/opt/mssql/mlservices/libraries/PythonServer/revoscalepy/RxSerializable.py", line 375, in rx_native_call
    ret = px_call(functionname, params)
RuntimeError: revoscalepy function failed.
Total execution time: 00:01:00.387

Řešení problému

Spusťte následující příkaz:

sudo cp /opt/mssql/lib/libc++abi.so.1 /opt/mssql-extensibility/lib/

Platí pro: SQL Server 2019 (15.x) v Linuxu

Obecná chyba při spuštění sp_execute_external_script na Ubuntu 20.04 s SQL Serverem 2022 CU6 v Linuxu

Instalace SQL Serveru 2022 CU6 pro Linux na Ubuntu 20.04 může způsobit následující chybu při spuštění sp_execute_external_script pro skripty R a Python:

Msg 39012, Level 16, State 14, Line 0
Unable to communicate with the runtime for 'R' script for request id: 94257840-1704-45E8-83D2-2F74AEB46CF7. Please check the requirements of 'R' runtime.

STDERR message(s) from external script: 
/usr/lib/R/library/RevoScaleR/rxLibs/x64/libExaCore.so.2(_Z21CriticalSignalHandleri+0x29)[0x7f2568289d89]
/usr/lib/x86_64-linux-gnu/libc.so.6(+0x43090)[0x7f2568d66090]

Řešení problému

Spuštěním následujícího příkazu nainstalujte závislost libssl-dev balíčku, která umožňuje SQL Serveru vyřešit systémově poskytované sdílené knihovny libssl a libcrypto.

sudo apt-get update
sudo apt-get install libssl-dev

Chyba při vytváření pravidla brány firewall ve modprobe při spuštění mssql-launchpadd na Linuxu

Při prohlížení protokolů mssql-launchpadd pomocí sudo journalctl -a -u mssql-launchpadd se může zobrazit chyba vytvoření pravidla brány firewall podobná následujícímu výstupu.

-- Logs begin at Sun 2021-03-28 12:03:30 PDT, end at Wed 2022-10-12 13:20:17 PDT. --
Mar 22 16:57:51 sqlVm systemd[1]: Started Microsoft SQL Server Extensibility Launchpad Daemon.
Mar 22 16:57:51 sqlVm launchpadd[195658]: 2022/03/22 16:57:51 [launchpadd] INFO: Extensibility Log Header: <timestamp> <process> <sandboxId> <sessionId> <message>
Mar 22 16:57:51 sqlVm launchpadd[195658]: 2022/03/22 16:57:51 [launchpadd] INFO: No extensibility section in /var/opt/mssql/mssql.conf file. Using default settings.
Mar 22 16:57:51 sqlVm launchpadd[195658]: 2022/03/22 16:57:51 [launchpadd] INFO: DataDirectories =  /bin:/etc:/lib:/lib32:/lib64:/sbin:/usr/bin:/usr/include:/usr/lib:/usr/lib32:/usr/lib64:/usr/libexec/gcc:/usr/sbin:/usr/share:/var/lib:/opt/microsoft:/opt/mssql-extensibility:/opt/mssql/mlservices:/opt/mssql/lib/zulu-jre-11:/opt/mssql-tools
Mar 22 16:57:51 sqlVm launchpadd[195658]: 2022/03/22 16:57:51 [launchpadd] INFO: [RG] SQL Extensibility Cgroup initialization is done.
Mar 22 16:57:51 sqlVm launchpadd[195658]: 2022/03/22 16:57:51 [launchpadd] INFO: Found 1 IP address(es) from the bridge.
Mar 22 16:57:51 sqlVm launchpadd[195676]: modprobe: ERROR: could not insert 'ip6_tables': Operation not permitted
Mar 22 16:57:51 sqlVm launchpadd[195673]: ip6tables v1.8.4 (legacy): can't initialize ip6tables table `filter': Table does not exist (do you need to insmod?)
Mar 22 16:57:51 sqlVm launchpadd[195673]: Perhaps ip6tables or your kernel needs to be upgraded.
Mar 22 16:57:51 sqlVm launchpadd[195678]: modprobe: ERROR: could not insert 'ip6_tables': Operation not permitted
Mar 22 16:57:51 sqlVm launchpadd[195677]: ip6tables v1.8.4 (legacy): can't initialize ip6tables table `filter': Table does not exist (do you need to insmod?)
Mar 22 16:57:51 sqlVm launchpadd[195677]: Perhaps ip6tables or your kernel needs to be upgraded.
Mar 22 16:57:51 sqlVm launchpadd[195670]: 2022/03/22 16:57:51 [setnetbr] ERROR: Failed to set firewall rules: exit status 3

Řešení problému

Spuštěním následujících příkazů nakonfigurujte modprobea restartujte službu Launchpad SQL Serveru:

sudo modprobe ip6_tables
sudo systemctl restart mssql-launchpadd

Platí pro: SQL Server 2019 (15.x) a novější v Linuxu

Nejde nainstalovat tensorflow balíček pomocí sqlmlutils

Balíček sqlmlutils se používá k instalaci balíčků Pythonu v SQL Serveru 2019 (15.x). Potřebujete stáhnout, nainstalovat a aktualizovat Microsoft Visual C++ 2015-2019 Redistributable (x64). tensorflow Balíček ale nejde nainstalovat pomocí sqlmlutils. Balíček tensorflow závisí na novější verzi numpy , než je verze nainstalovaná na SQL Serveru. Jedná se však o předinstalovaný systémový balíček, numpy který sqlmlutils nelze aktualizovat při pokusu o instalaci tensorflow.

Řešení problému

Pomocí příkazového řádku v režimu správce spusťte následující příkaz a nahraďte "MSSQLSERVER" názvem vaší instance SQL Serveru:

"C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES\python.exe" -m pip install --upgrade tensorflow

Pokud se zobrazí chyba TLS/SSL, přečtěte si 7. Balíčky Pythonu nejde nainstalovat pomocí nástroje pip v dřívější části tohoto článku.

Platí pro: SQL Server 2019 (15.x) na Windows

Revolution R Enterprise a Microsoft R Open

Tato část uvádí problémy týkající se připojení R, vývoje a nástrojů pro měření výkonu poskytovaných službou Revolution Analytics. Tyto nástroje byly poskytnuty v dřívějších předběžných verzích SQL Serveru.

Obecně doporučujeme odinstalovat tyto předchozí verze a nainstalovat nejnovější verzi SQL Serveru nebo Microsoft R Serveru.

Revolution R Enterprise se nepodporuje.

Instalace Revolution R Enterprise vedle jakékoli verze R Services (In-Database) se nepodporuje.

Pokud máte existující licenci pro Revolution R Enterprise, musíte ji umístit na samostatný počítač od instance SQL Serveru i na všechny pracovní stanice, které chcete použít pro připojení k instanci SQL Serveru.

Některé předběžné verze služeb R (In-Database) obsahovaly vývojové prostředí R pro Windows vytvořené službou Revolution Analytics. Tento nástroj už není k dispozici a není podporovaný.

Pro zajištění kompatibility se službami R (In-Database) doporučujeme místo toho nainstalovat klienta Microsoft R. Nástroje R pro Visual Studio a Visual Studio Code také podporují řešení Microsoft R.

Problémy s kompatibilitou s ovladačem ODBC SQLite a RevoScaleR

Revize 0.92 ovladače ODBC SQLite není kompatibilní s RevoScaleR. Revize 0.88-0.91 a 0.93 a novější jsou známé jako kompatibilní.

Další kroky