KB4563195 - REMEDIERE: sp_execute_external_script poate să nu ruleze scripturi R care utilizează contextul de calcul RxLocalParallel sau pachetul doParallel R în SQL Server 2019

Se aplică la
SQL Server 2019 on Windows

Simptome

Să presupunem că rulați scripturi R care utilizează contextul de calcul RxLocalParallel sau pachetul R doParallel. Atunci când utilizați sp_execute_external_script pentru a rula scripturi scrise în R, observați că interogarea se poate bloca în timp ce rulează funcțiile paralele.

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft care sunt listate în secțiunea „Se aplică la”.

Rezolvare

Această problemă este remediată în următoarea actualizare cumulativă pentru SQL Server:

Despre actualizările cumulative pentru SQL Server:

Fiecare actualizare cumulativă nouă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:

Soluție

Pentru a rezolva problema fără a actualiza, puteți include un cod R suplimentar în partea de sus a scriptului în sp_execute_external_script. Codul este următorul:

parallel <- getNamespace("parallel")

unlockBinding("makePSOCKcluster", paralel)

internalMakePSOCKcluster <- paralel::makePSOCKcluster

wrapperMakePSOCKcluster = function(...) {

args <- list(...)

if (!(" outfile" %in% names(args)) || is.null(args[["outfile"]]))

⁠{⁠

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

⁠}⁠

do.call(internalMakePSOCKcluster, args)

⁠}⁠

parallel$makePSOCKcluster <- wrapperMakePSOCKcluster

lockBinding("makePSOCKcluster", paralel)

Referințe

Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.