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.