Applies ToSQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup

A Microsoft distribui as correções R2 do Microsoft SQL Server 2008 como um ficheiro transferível. Como as correções são cumulativas, cada nova versão contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior lançamento de correção de R2008 do SQL Server 2008.

Sintomas

Considere o seguinte cenário:

  • Tem um modelo e entidade master data services (MDS) que tem um atributo baseado em domínio no Microsoft SQL Server 2008 R2. O atributo baseado em domínio é projetado para se auto-referir ao mesmo atributo. Por exemplo, tem uma entidade empregado que tem um atributo ManagerName. O atributo ManagerName refere-se à mesma entidade do Empregado.Nota Um gerente também é uma espécie de empregado.

  • Existe uma hierarquia derivada que é definida num atributo para mostrar a relação pai/filho recursiva para o atributo baseado no domínio.

  • Carregue os valores de dados que contenham uma ou mais referências circulares à tabela de paragem MDS. Este comportamento causa uma referência circular, e o primeiro nó no atributo não faz parte do círculo. Por exemplo, o seguinte padrão de dados mostra uma referência circular. No entanto, o valor do membro 1 não faz parte do círculo:

    Atributo membro1 --manager --> Membro2 --manager atributo--- > Membro3 --manager atributo --> Membro2 --manager atributo --> Membro3

    insert into mdm.tblStgMemberAttribute(ModelName, EntityName, MemberType_ID, MemberCode, AttributeName, AttributeValue, Status_ID)Values ('EntityTest', 'ModelTest', 1, 'Member3', 'Manager', 'Member2', 0),('EntityTest', 'ModelTest', 1, 'Member2', 'Manager', 'Member3', 0),('EntityTest', 'ModelTest', 1, 'Member3', 'Manager', 'Member2', 0),('EntityTest', 'ModelTest', 1, 'Member2', 'Manager', 'Member1', 0)('EntityTest', 'ModelTest', 1, 'Member1', 'Manager', 'NULL', 0)
  • Utiliza um dos seguintes métodos para carregar os valores dos dados na entidade utilizando o processo de preparação MDS:

    • Executar o Executivo [MDM].. procedimento udpStagingSweep] utilizando os parâmetros necessários para processar os dados encenados.

    • Clique em Gestão de Integração para visitar a página inicial do site do MDS. Na página Import Export, no cabeçalho da secção Unbatched Staging Records, clique no Ícone de Engrenagem para processar os registos de um modelo e versão específicos.

Neste cenário, o processo de fundo durante o processo de encenação pode encontrar um ciclo infinito quando o processo de fundo internamente chama de [mdm].. procedimento udpMemberRecursiveCircularCheck] procedimento.

Causa

Esta questão ocorre porque os procedimentos udpStagingSweep e udpStagingMemberAttributeSave chamam o procedimento udpMemberRecursiveCircularCheck uma vez para cada linha de encenação. Este comportamento deve verificar um valor de atributo baseado em domínio, e retorna um erro se a linha de encenação causar uma referência circular juntamente com os dados existentes. Depois de todas as linhas de paragem serem verificadas, recebe os seguintes resultados:

  • Aplicam-se as filas de preparação sem erros.

  • As linhas de encenação com erros são notadas com um código de erro.

Se as condições descritas na secção "Sintomas" forem verdadeiras, o [mdm].. o procedimento udpMemberRecursiveCircularCheck] loops de procedimento indefinidamente até que os recursos do servidor estejam esgotados, ou ocorra uma saída sem tempo.

Resolução

Informação de atualização cumulativa

Sql Server 2008 R2 Service Pack 1

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 4. Para obter mais informações sobre como obter este pacote de atualização cumulativa para SQL Server 2008 R2 SP1, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

2633146 Pacote de atualização cumulativo 4 para SQL Server 2008 R2 Service Pack 1Nota Como as construções 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 com o anterior lançamento de correção R2 SP1 do SQL Server 2008. Recomendamos que considere aplicar o mais recente lançamento de correção que contém este hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2567616 O SQL Server 2008 R2 constrói que foram lançados após o lançamento do SQL Server 2008 R2 Service Pack 1

Estado

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

Solução

Para contornar este problema, utilize um dos métodos seguintes:

  • Para evitar a questão, siga estes passos:

    1. Reveja manualmente os valores de dados dos membros que estão a ser inseridos na tabela de preparação antes de executar o processo de preparação.

    2. Certifique-se de que todos os valores dos membros relativos a quaisquer atributos baseados em domínios não contêm referências circulares descritas na secção "Sintomas"

  • Quando o problema descrito na secção "Sintomas" ocorrer, siga estes passos para corrigir a questão:

    1. Identifique a sessão que está a decorrer no ciclo infinito.

    2. Acabe com a sessão para parar o ciclo.

    3. Elimine os valores de referência circulares da tabela de preparação antes que a referência circular seja novamente processada.

Notas

  • Para identificar que sessão matar, utilize um dos seguintes métodos:

    • Utilize um monitor de atividade no Microsoft SQL Server Management Studio.

    • Selecione a partir dos sys.sysprocesses ou sys.dm_exec_requests vista dinâmica de gestão (DMV) para identificar as sessões que estão a trabalhar dentro da base de dados MDS em que o CPU e o tempo estão a aumentar rapidamente. Certifique-se de que a consulta atual que está a decorrer na sessão corresponde aos nomes de procedimento descritos na secção "Causa".

  • Para identificar o procedimento atualmente em execução para as sessões, utilize um dos seguintes métodos:

    • Clique no botão direito Menu de detalhes em cada processo na listagem de processos de monitorização de atividade.

    • Utilize um dos seguintes parâmetros:

      • O comando DBCC INPUTBUFFER (spid) juntamente com o ID da sessão.

      • A função SELECT * FROM sys.dm_exec_sql_text (sqlhandle) juntamente com o parâmetro de manípulo SQL correspondente quando utilizar a saída DMV.

Referências

Para obter mais informações sobre como abrir um monitor de atividade no SQL Server Management Studio, visite o seguinte website da MSDN:

Como abrir um monitor de atividade no SQL Server Management StudioPara mais informações sobre a sintaxe KILL, visite o seguinte site da MSDN:

Informações gerais sobre a sintaxe KILLPara mais informações sobre o DMV sys.dm_exec_requests, visite o seguinte site da MSDN:

Informações gerais sobre o DMV sys.dm_exec_requestsPara mais informações sobre o DMV sys.dm_exec_sql_text, visite o seguinte site da MSDN:

Informações gerais sobre o DMV sys.dm_exec_sql_textPara mais informações sobre o comando DBCC INPUTBUFFER, visite o seguinte site da MSDN:

Informações gerais sobre o comando DBCC INPUTBUFFERPara obter mais informações sobre o Modelo de Manutenção Incremental para O Servidor SQL, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

935897 Um Modelo de Manutenção Incremental está disponível na equipa do SQL Server para entregar hotfixes para problemas relatadosPara obter mais informações sobre o esquema de nomeação para atualizações do SQL Server, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

822499 Novo esquema de nomeação para pacotes de atualização de software do Microsoft SQL ServerPara obter mais informações sobre a terminologia da atualização do software, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

824684Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.