Sintomas
Suponha que você execute scripts R que usam o contexto de computação RxLocalParallel ou o pacote doParallel R. Quando você usa sp_execute_external_script para executar scripts que são escritos em R, você percebe que a consulta pode travar durante a execução das funções paralelas.
Estado
A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".
Resolução
Este problema foi corrigido na seguinte atualização cumulativa para SQL Server:
Acerca das atualizações cumulativas para SQL Server:
Cada nova atualização cumulativa para SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:
Solução
Para contornar o problema sem atualizar, você pode incluir algum código R adicional na parte superior do script no sp_execute_external_script. O código é o seguinte:
paralelo <- getNamespace("parallel")
unlockBinding("makePSOCKcluster", parallel)
internalMakePSOCKcluster <- parallel::makePSOCKcluster
wrapperMakePSOCKcluster = function(...) {
args <- lista(...)
if (!(" outfile" %in% nomes(args)) || IS.NULL(ARGS[["OUTFILE"]]))
{
args[["outfile"]] <- tempfile()
}
do.call(internalMakePSOCKcluster, args)
}
parallel$makePSOCKcluster <- wrapperMakePSOCKcluster
lockBinding("makePSOCKcluster", parallel)
Referências
Saiba mais sobre a terminologia que a Microsoft utiliza para descrever as atualizações de software.