Entrar com a conta da Microsoft
Entrar ou criar uma conta.
Olá,
Selecionar uma conta diferente.
Você tem várias contas
Escolha a conta com a qual você deseja entrar.

Sintomas

Quando você usa funções SCOPE_IDENTITY() ou @@IDENTITYpara recuperar os valores inseridos em uma coluna de identidade, você pode notar que essas funções às vezes retornam valores incorretos. O problema ocorre somente quando suas consultas usam planos de execução paralelas. Para obter mais informações sobre como determinar se suas consultas usarão planos de execução paralelas, consulte a seção Paralelismo Intra-query no artigo técnico a seguir sobre Downloads da Microsoft:

Causa

A Microsoft confirmou que esse é um problema que ocorre nos produtos Microsoft listados no início deste artigo.

Resolução

Informações sobre a atualização cumulativa

SQL Server 2008 R2 Service Pack 1

A correção desse problema foi lançada pela primeira vez na Atualização Cumulativa 5 para SQL Server 2008 R2 Service Pack 1. Para obter mais informações sobre como obter esse pacote de atualização cumulativa, clique no seguinte número de artigo para exibir o artigo na Base de Dados de Conhecimento da Microsoft: 

2659694Pacote de Atualização Cumulativa 5 para SQL Server 2008 R2 Service Pack 1

                Observação Como as builds são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas na versão de correção do SQL Server 2008 R2 anterior. Recomendamos que você considere aplicar a versão de correção mais recente que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler os artigos na Base de Dados de Conhecimento Microsoft:

2567616As SQL Server 2008 R2 que foram lançadas após SQL Server 2008 R2 Service Pack 1 foi lançado

Solução alternativa

A Microsoft recomenda que você não use nenhuma dessas funções em suas consultas quando os planos paralelos estão envolvidos, pois nem sempre são confiáveis. Em vez disso, use a cláusula OUTPUT da instrução INSERT para recuperar o valor de identidade, conforme mostrado no exemplo abaixo.

Exemplo de uso da cláusula OUTPUT:

DECLARE @MyNewIdentityValues table(myidvalues int)
declare @A tabela (ID int primary key)
inserir em @A valores (1)
declare @B tabela (ID int primary key identity(1,1), B int not null)
inserir em @B valores (1)
select
    [RowCount] = @@RowCount,
    [@@IDENTITY] = @@IDENTITY,
    [SCOPE_IDENTITY] = SCOPE_IDENTITY()

definir o perfil de estatísticas em
inserir no _ddr_T
saída inserted.ID em @MyNewIdentityValues
    select
            
b.ID         de @A um
            left join @B b on b.ID = 1
            left join @B b2 on b2. B = -1

            left join _ddr_T t on t.T = -1

        onde não existe (selecione * de _ddr_T t2 onde t2.ID = -1)
definir o perfil de estatísticas desligado

select
    [RowCount] = @@RowCount,
    [@@IDENTITY] = @@IDENTITY,
    [SCOPE_IDENTITY] = SCOPE_IDENTITY(),
    [IDENT_CURRENT] = IDENT_CURRENT('_ddr_T')
select * from @MyNewIdentityValues
go

Se a sua situação exigir que você precise usar uma dessas funções, você poderá usar um dos seguintes métodos para contornar o problema.

Método 1:

Inclua a seguinte opção em sua consulta

OPÇÃO (MAXDOP 1)

Observação: isso pode prejudicar o desempenho da parte SELECT da consulta.

Método 2:

Leia o valor da parte SELECT em um conjunto de variáveis (ou uma única variável de tabela) e insira na tabela de destino com MAXDOP=1. Como o plano INSERT não será paralelo, você obterá a semântica correta, mas seu SELECT será paralelo para atingir o desempenho desejado.

Método 3:

Execute a seguinte instrução para definir o grau máximo da opção de paralelismo como 1:

sp_configure "grau máximo de paralelismo", 1

go

reconfigurar com substituição

go

Observação: esse método pode causar degradação de desempenho no servidor. Você não deve usar esse método, a menos que o tenha avaliado em um ambiente de teste ou preparação.

Informações adicionais

Erro do Microsoft Connect neste problemahttps://docs.microsoft.com/en-us/collaborate/connect-redirect

Max Degree of Parallelism (MAXDOP)

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?
Ao pressionar enviar, seus comentários serão usados para aprimorar os produtos e serviços da Microsoft. Seu administrador de TI poderá coletar esses dados. Política de Privacidade.

Agradecemos seus comentários!

×