KB4563195 — POPRAWKA: sp_execute_external_script może nie uruchamiać skryptów języka R, które używają kontekstu obliczeniowego RxLocalParallel lub pakietu doParallel R w SQL Server 2019 r.

Dotyczy
SQL Server 2019 on Windows

Objawy

Załóżmy, że uruchamiasz skrypty języka R, które używają kontekstu obliczeniowego RxLocalParallel lub pakietu doParallel R. Gdy używasz sp_execute_external_script do uruchamiania skryptów napisanych w języku R, zauważasz, że zapytanie może się zawiesić podczas uruchamiania funkcji równoległych.

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.

Rozwiązanie

Ten problem został rozwiązany w następującej aktualizacji zbiorczej dla programu SQL Server:

Informacje o aktualizacjach zbiorczych programu SQL Server:

Każda nowa aktualizacja zbiorcza programu SQL Server zawiera wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji skumulowanej. Sprawdź najnowsze aktualizacje zbiorcze dla programu SQL Server:

Obejście

Aby obejść ten problem bez konieczności aktualizowania, możesz dołączyć dodatkowy kod języka R u góry skryptu w sp_execute_external_script. Kod jest następujący:

parallel <- getNamespace("parallel")

unlockBinding("makePSOCKcluster", parallel)

internalMakePSOCKcluster <- parallel::makePSOCKcluster

wrapperMakePSOCKcluster = function(...) {

args <- list(...)

jeśli (!(" plik_wyjściowy" %in% nazw(argumenty)) || is.null(args[["outfile"]]))

⁠{⁠

args[["outfile"]] <- tempfile()

⁠}⁠

do.call(internalMakePSOCKcluster, args)

⁠}⁠

parallel$makePSOCKcluster <- wrapperMakePSOCKcluster

lockBinding("makePSOCKcluster", parallel)

Źródła informacji

Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.