none
Dead Lock em processamento de cubos/dimensões RRS feed

  • Pergunta

  • Bom dia,

    Tenho dois projetos publicados no SSISDB que são iguais. Eles processam cubos, dimensões e measures tendo como origem bases DW diferentes e como destino bases OLAP diferentes.

    Agendei um job para executar esses pacotes no mesmo horário e percebi que um deles sempre dava erro (de maneira aleatória).

    O erro é: Transaction errors: The lock operation ended unsuccessfully because of deadlock.

    Executando em horários alternados, o erro não ocorre mais.

    Alguém sabe me dizer o motivo disso? Sendo que tenho origens e destinos diferentes apesar os pacotes e cubos serem iguais?


    Obrigada.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    sexta-feira, 14 de novembro de 2014 11:36

Respostas

  • Bom dia Durval,

    Eu capturei e analisei o que estava ocorrendo no Analysis Services e nada justificou o dead lock.

    O processamento em momentos separados ocorre normalmente. Então ajustei o job para executar um e depois de uma hora, executar o segundo e não tive mais problemas.

    Sendo assim, o que devo fazer com o post? Deixo ele em aberto mesmo?

    Obrigada.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    terça-feira, 6 de janeiro de 2015 12:05

Todas as Respostas

  • Bom dia Mariana,

    Você consegue nos informar em qual nível de isolamento as consultas estão sendo executadas?



    Att, Bruno Silva.

    sexta-feira, 14 de novembro de 2014 12:34
  • Bom dia Bruno,

    Todo o pacote esta como Read Uncommited.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    sexta-feira, 14 de novembro de 2014 12:37
  • Mariana,

    Você esta utilizando algum Hint Table em suas consultas?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    sexta-feira, 14 de novembro de 2014 13:58
  • Junior,

    Desculpe falta de conhecimento, mas não tem queries. O pacote usa apenas  "Analysis Services Processing Task" das dimensões e cubos.
    Eu coloquei a propriedade IsolationLevel de cada uma dessas tasks como ReadUncommitted.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    sexta-feira, 14 de novembro de 2014 15:43
  • Mariana,

    Vc está utilizando o Integration Services Catalog certo? Se sim, veja no relatório de execução do pacote quais bases origens/destino o pacote está utilizando (Clique na opção Overview). Vc está utilizando parâmetros para setar o servidor/banco? Está utilizando também environments?

    Veja também se existe outra aplicação ou rotina que está utilizando suas bases DW origem.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    segunda-feira, 17 de novembro de 2014 19:23
  • Mariana,

    Este problema pode estar relacionado à um bloqueio realizado na execução concorrente de dados de um cubo, em contextos de sessões diferentes (em mais de uma conexão).

    Isto foi documentado no KB abaixo:

    https://support.microsoft.com/kb/960562

    As adequações para esta correção (no SQL Server 2005 ou 2008) estão indicadas neste KB. 

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Sugerido como Resposta Wyllian de Lima sexta-feira, 5 de dezembro de 2014 12:59
    quarta-feira, 19 de novembro de 2014 13:35
    Moderador
  • Junior,

    Desculpe falta de conhecimento, mas não tem queries. O pacote usa apenas  "Analysis Services Processing Task" das dimensões e cubos.
    Eu coloquei a propriedade IsolationLevel de cada uma dessas tasks como ReadUncommitted.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    Mariana,

    Sem problemas, talvez eu tenho entendido errado do seu problema



    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 19 de novembro de 2014 16:14
  • Durval,

    Se você observou a respostas da Mariana, ela disse que esta utilizando o IsolationLevel ReadUncommited em cada Task que esta em uso no pacote, acredito que isso é justamente o causador do problema.

    Mesmo que ela esteja praticamente removendo a possibilidade de deadlock fazendo uso do ReadUncommited, entendo que alguma transação em "sleeping" ou "wait" possa estar presente devido a execuções passadas.

    O que você acha?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 19 de novembro de 2014 16:17
  • Mariana,

    Vc está utilizando o Integration Services Catalog certo? Se sim, veja no relatório de execução do pacote quais bases origens/destino o pacote está utilizando (Clique na opção Overview). Vc está utilizando parâmetros para setar o servidor/banco? Está utilizando também environments?

    Veja também se existe outra aplicação ou rotina que está utilizando suas bases DW origem.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    Eduardo, boa tarde

    Sim, estou usando o Integration Services Catalog, porém sem enviroments.

    Eu estou usando parâmetros para servidor, nome da base, usuário e senha.

    Já chequei as bases de origem e estão corretas. Cada projeto aponta para um DW diferente.
    E como é algo novo, garanto que não existe aplicação ou qualquer serviço que faça acesso as bases DW além do pacote que faz a carga diferencial (em momento diferente do processamento do cubo) e o próprio processamento.

    Obrigada.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    quarta-feira, 19 de novembro de 2014 16:58
  • Durval,

    Se você observou a respostas da Mariana, ela disse que esta utilizando o IsolationLevel ReadUncommited em cada Task que esta em uso no pacote, acredito que isso é justamente o causador do problema.

    Mesmo que ela esteja praticamente removendo a possibilidade de deadlock fazendo uso do ReadUncommited, entendo que alguma transação em "sleeping" ou "wait" possa estar presente devido a execuções passadas.

    O que você acha?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    Junior,

    Você tem razão, o nível de isolamento de uma ou mais tarefas (ou mesmo um nível diferente relacionado ao pacote) podem afetar o processamento e gerar o confilto para ocorrer este "lock".

    De qualquer forma, acompanhando as colaborações da Mariana na Comunidade eu acredito que ela já tenha feito este teste (não é Mariana?).

    Mesmo não existindo outro cubo ou dimensão que utilizem estes dados simultâneamente, eu faria um teste reiniciando o serviço desta instância SQL (apenas como teste e em um horário alternativo), para ter certeza que não há outro contexto ativo utilizando estes dados (deste cubo ou de outro). Como é um DW eu acredito que pode existir um outro recurso (PowerView, OWC,... ou até mesmo uma execução não "finalizada completamente" pelo SSIS) que está consumindo uma parte destes conteúdo, gerando o "deadlock".

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 24 de novembro de 2014 18:18
    Moderador
  • Durval, boa tarde,

    Sim, já fiz esse teste.

    O cenário é relativamente simples porque é algo que estou implantando e que não tem clientes utilizando (ainda). Então consigo garantir que nada nem ninguém esteja acessando o DW ou o OLAP exceto meus próprios pacotes.

    Colocar os jobs em horários diferentes resolveu, mas me incomoda o fato dele estar meio que "se perdendo" pelo fato da solução de origem ser a mesma, mesmo que os bancos DW e os OLAP sejam diferentes.

    Monitorei pelo Profiler todas as consultas feitas no DW e não tive nenhum lock. Agora quero ver se acho algo monitorando o Analysis Services.

    Esse tópico é mais pra eu conseguir entender mesmo onde o Analysis Services está se perdendo quando executo os dois processamentos juntos.

    Se achar algo no profiler, coloco aqui.

    Obrigada.



    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    segunda-feira, 24 de novembro de 2014 19:08
  • Durval, boa tarde,

    Sim, já fiz esse teste.

    O cenário é relativamente simples porque é algo que estou implantando e que não tem clientes utilizando (ainda). Então consigo garantir que nada nem ninguém esteja acessando o DW ou o OLAP exceto meus próprios pacotes.

    Colocar os jobs em horários diferentes resolveu, mas me incomoda o fato dele estar meio que "se perdendo" pelo fato da solução de origem ser a mesma, mesmo que os bancos DW e os OLAP sejam diferentes.

    Monitorei pelo Profiler todas as consultas feitas no DW e não tive nenhum lock. Agora quero ver se acho algo monitorando o Analysis Services.

    Esse tópico é mais pra eu conseguir entender mesmo onde o Analysis Services está se perdendo quando executo os dois processamentos juntos.

    Se achar algo no profiler, coloco aqui.

    Obrigada.



    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    Mariana,

    Conseguiu obter algum resultado? Se encontrou a solução, indique o que foi feito para que outros com um problema semelhante possam utilizar sua experiência. Caso contrário, indique onde você parou para que todos na Comunidade possam ajudar a encontrar uma solução.

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 5 de janeiro de 2015 22:54
    Moderador
  • Bom dia Durval,

    Eu capturei e analisei o que estava ocorrendo no Analysis Services e nada justificou o dead lock.

    O processamento em momentos separados ocorre normalmente. Então ajustei o job para executar um e depois de uma hora, executar o segundo e não tive mais problemas.

    Sendo assim, o que devo fazer com o post? Deixo ele em aberto mesmo?

    Obrigada.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    terça-feira, 6 de janeiro de 2015 12:05
  • Bom dia Durval,

    Eu capturei e analisei o que estava ocorrendo no Analysis Services e nada justificou o dead lock.

    O processamento em momentos separados ocorre normalmente. Então ajustei o job para executar um e depois de uma hora, executar o segundo e não tive mais problemas.

    Sendo assim, o que devo fazer com o post? Deixo ele em aberto mesmo?

    Obrigada.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    Mariana,

    Fico feliz que o problema foi resolvido (de algum modo). Vou marcar seu post como resposta.

    Se houve algum post deste tópico que ajudou você a obter esta conclusão (execução separada dos jobs), gostaria que você votasse como "útil" para servir como referência para outros membros e também como um "obrigado" para quem ajudou você obter idéias para à solução (sinta-se livre para votar ou não). Somos uma Comunidade, queremos crescer e aprender juntos!

    Caso este problema volte ocorrer, crie outro Tópico de Pergunta e, se achar necessário, faça uma citação (com a URL) deste Tópico.

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    terça-feira, 6 de janeiro de 2015 12:42
    Moderador