KB3014867 - CORREÇÃO: A exceção "Falha de proteção remota" não pode ser detectada e uma possível perda de dados ao usar o SQL Server 2014

Aplica-se a
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Sintomas

Suponha que você habilite Grupos de Disponibilidade AlwaysOn em uma instância do Microsoft SQL Server 2014. Você executa um failover de grupo de disponibilidade enquanto a réplica primária tem transações ativas. Em seguida, você recebe a seguinte mensagem de aviso 3303:

Observação

O reforço remoto da transação '%.*ls' (ID 0x%016I64x %ls) iniciado em %S_DATE no banco de dados '%ls' no LSN %S_LSN falhou.

Nessa situação, os seguintes drivers ou provedores de dados não podem detectar a exceção de "falha de proteção remota":

  • Microsoft JDBC Driver for SQL Server 4.0
  • Driver do OLE DB para SQL Server
  • Cliente nativo do SQL Server para OLE DB

Portanto, o aplicativo cliente que usa esses drivers ou provedores não sabe que a transação está "em dúvida". Uma transação "em dúvida" significa que ela pode ter sido confirmada e protegida para o disco com êxito ou é anulada e revertida pelo SQL Server. Se essa transação "em dúvida" for revertida, esses drivers ou provedores ainda poderão considerar a transação como confirmada com êxito porque não podem capturar a exceção. Isso pode causar um problema de inconsistência de dados do aplicativo.

Observação Os provedores de conexão a seguir podem capturar a exceção de "falha de proteção remota" para as transações "em dúvida":

  • Driver ODBC da Microsoft para SQL Server
  • SQL Server Native Client (ODBC)

      

Resolução

Esse problema foi corrigido pela primeira vez na atualização cumulativa seguinte do SQL Server.

Atualização cumulativa 5 para SQL Server 2014 /pt-br/help/3011055

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 para o SQL Server:

      

Informações sobre o hotfixEsse hotfix introduz um novo sinalizador de rastreamento 3923. O sinalizador de rastreamento permitirá que o SQL Server lance uma exceção para o aplicativo quando a mensagem de aviso 3303 for gerada.

Depois de aplicar o hotfix, você precisa habilitar esse sinalizador de rastreamento para resolver esse problema. Com o hotfix e o sinalizador de rastreamento, o aplicativo também precisa implementar códigos de validação para marcar se a transação é revertida ou confirmada depois que a exceção é capturada.

 Um hotfix compatível foi disponibilizado pela Microsoft. No entanto, este hotfix destina-se a corrigir somente o problema descrito neste artigo. Aplique-o somente em sistemas que apresentarem esse problema específico.

Se o hotfix estiver disponível para download, existirá uma seção "Download de hotfix disponível" na parte superior deste artigo da Base de Dados de Conhecimento. Se esta seção não aparecer, envie uma solicitação ao Serviço de Suporte e Atendimento ao Cliente Microsoft para obter o hotfix.

Observação Se outros problemas estiverem ocorrendo ou se uma solução de problemas for necessária, talvez seja preciso criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a outras questões e problemas de suporte não qualificados para esse hotfix específico. Para obter uma lista completa dos números de telefone do Atendimento ao Cliente da Microsoft ou para criar uma solicitação de serviço separada, visite o seguinte site da Microsoft:

/contactus/?ws=support Observação O formulário "Download de hotfix disponível" mostra os idiomas para os quais o hotfix está disponível. Se o seu idioma não for exibido, significa que não há um hotfix disponível para ele.

Requisito de reinicializaçãoNão é necessário reiniciar o computador após aplicar esse hotfix.

Status

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