KB4517771 - CORRECÇÃO: Sessões CLR órfãs causam bloqueio no SQL Server

Aplica-se a
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Standard on Windows SQL Server 2019 on Windows

Sintomas

Suponha que você use uma sessão que chama um procedimento armazenado CLR (Common Language Runtime) (uma "sessão de chamada") para acessar dados no Microsoft SQL Server e que esse procedimento, por sua vez, estabeleça uma conexão separada (uma "segunda sessão") para o mesmo servidor em vez de uma Conexão de Contexto. Em seguida, se a sessão de chamada for encerrada devido a um tempo limite ou cancelamento, a segunda sessão poderá se tornar órfã e existirá no sistema até ser encerrada manualmente usando o comando KILL . Se essa sessão órfã contiver bloqueios, outras sessões poderão ser bloqueadas aguardando a liberação dos bloqueios.

Status

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Resolução

Esse problema é corrigido nas seguintes atualizações cumulativas para o SQL Server:

Sobre atualizações cumulativas para o SQL Server:

Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes do SQL Server

Observação Por padrão, a correção é desativada devido à necessidade de preservar o comportamento herdado do threading CLR no SQL Server. Você só precisa ativá-lo se o seu sistema apresentar os sintomas mencionados anteriormente. Para habilitar a correção, você precisa adicionar o sinalizador de rastreamento 6559 ao servidor usando as Opções de Inicialização do Serviço do Mecanismo de Banco de Dados. Lembre-se de que esse sinalizador de rastreamento só pode ser usado com as opções de inicialização do SQL Server. Ele não pode ser definido usando o comando DBCC TRACEON .

Referências

Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.