CORREÇÃO: Informações resumidas para a tabela URLs substituídas pela parte superior e para a tabela Usuários de substituição de regra superior exibem informações incorretas em um ambiente do Forefront Threat Management Gateway 2010

Aplica-se A
Microsoft Forefront Threat Management Gateway 2010 Service Pack 2 Forefront Threat Management Gateway 2010 Enterprise Forefront Threat Management Gateway 2010 Standard

Sintomas

Tenha em conta o seguinte cenário:

  • Configurar o Microsoft Forefront Threat Management Gateway 2010 para usar o recurso User override for blocked categories que foi introduzido no Microsoft Forefront Threat Management Gateway 2010 Service Pack 1 (SP1).
  • Configurar o Forefront Threat Management Gateway 2010 para gerar relatórios para que você possa monitorar quais usuários estão substituindo as regras de negação.

Neste cenário, poderá constatar que as informações de resumo da tabela URLs Substituídos pela Parte Superior e pela tabela Utilizadores de Substituição de Regras Superiores apresentam informações incorretas e que os valores parecem ser muito maiores do que o esperado.

Causa

Este problema ocorre porque o procedimento armazenado para resumir estas informações acumula incorretamente os valores para que os valores do dia anterior sejam rolados para os valores do dia seguinte.

Resolução

Para resolver esse problema, instale o pacote de hotfix descrito no seguinte artigo da Base de Dados de Conhecimento Microsoft:

2649961 Rollup 1 para o Forefront Threat Management Gateway (TMG) 2010 Service Pack 2Para habilitar essa correção, execute o script FixSoftBlockSummaries.js em um dos servidores Forefront Threat Management Gateway. Você pode executar esse script em qualquer servidor Forefront Threat Management Gateway, em um nó de matriz ou em um Servidor de Gerenciamento Empresarial.

Observação O script enumera todas as matrizes disponíveis e corrige o procedimento armazenado para que as informações de resumo sejam criadas corretamente. Talvez seja necessário executar o script novamente se novas matrizes forem adicionadas ao armazenamento.

Para ativarmos esta correção, aceda à secção "Corrigir para mim". Se preferir ativar esta correção manualmente, aceda à secção "Deixe-me corrigir sozinho".

Resolver por mim

            
Para ativar esta correção automaticamente, clique no botão ou na ligação Fix it . Em seguida, clique em Executar na caixa de diálogo Download de arquivo e siga as etapas no assistente de correção.

            
Notas

  • Instale o hotfix descrito no artigo da Base de Dados de Conhecimento Microsoft (KB) 2649961 antes de executar esta solução Fix it.
  • Este assistente pode estar apenas em inglês. No entanto, a correção automática também funciona para versões do Windows noutros idiomas.
  • Se não estiver a trabalhar no computador que tem o problema, guarde a solução de Correção fácil numa pen USB ou num CD e, em seguida, execute-a no computador que tem o problema.

Em seguida, vá para a seção "Isso corrigiu o problema?".

Deixar-me corrigir o problema

  1. Inicie o Bloco de Notas. Para iniciar o Bloco de Notas, clique em Iniciar, clique em Executar, escreva notepad.exe na caixa Abrir e, em seguida, clique em OK.

  2. Cole o seguinte script num novo ficheiro do Bloco de Notas.

    var guidGenerator = new ActiveXObject("Scriptlet.TypeLib");
    var fpcRoot = new ActiveXObject("FPC.Root");
    try
    {
      WScript.Echo("Enumerating arrays:");
      var arraysCollection = new Enumerator(fpcRoot.Arrays);
      for (; !arraysCollection.atEnd(); arraysCollection.moveNext())
      {
          try
          {
              var array = arraysCollection.item();
              var found = false;
              WScript.Echo("    " + array.Name);
              var sumDefsCollection = new Enumerator(array.Reports.ReportSummaryDefinitions);
              for(; !sumDefsCollection.atEnd(); sumDefsCollection.moveNext())
              {
                  var sumDef = sumDefsCollection.item();
                  if(sumDef.Name != "spTrimArraySoftBlockSummary")
                  {
                      continue;
                  }
    
                  if (sumDef.AggregationStatement.indexOf("@ToDate AS [Date]") < 0)
                  {
                    WScript.Echo("---- spTrimArraySoftBlockSummary.AggregationStatement already contains fix, skipping array");
                    break;
                  }
    
                  found = true;
                  WScript.Echo("Found summary definition " + sumDef.Name + ", will fix the AggregationStatement");
                  WScript.Echo("---- Old version start");
                  WScript.Echo(sumDef.AggregationStatement);
                  WScript.Echo("---- Old version end");
                  sumDef.AggregationStatement = sumDef.AggregationStatement.replace(/@ToDate AS \[Date\]/g, "@FromDate AS [Date]");
                  WScript.Echo("---- New version start");
                  WScript.Echo(sumDef.AggregationStatement);
                  WScript.Echo("---- New version end");
                  break;
              }
              if (found)
              {
                  WScript.Echo("Updating configuration ID...");
                  WScript.Echo("Old configuration ID:" + array.Reports.ReportingServicesProperties.ReportingServicesConfigurationId);
                  array.Reports.ReportingServicesProperties.ReportingServicesConfigurationId = guidGenerator.Guid;
                  WScript.Echo("New configuration ID:" + array.Reports.ReportingServicesProperties.ReportingServicesConfigurationId);
    
                  WScript.Echo("Saving the current configuration...");
                  array.Save();
                  WScript.Echo("Waiting for configuration reload...");
                  array.WaitForReload();
              }
          }
          catch (err)
          {
            WScript.Echo("An error occurred. Error Decscription: " + err.description);
            WScript.Echo("Try running the script as an administrator");
          }
      }
    }
    catch (err)
    {
      WScript.Echo("An error occurred. Error Decscription: " + err.description);
      WScript.Echo("Try running the script as an administrator");
    }
    
  3. Guarde o ficheiro como FixSoftBlockSummaries.js e, em seguida, saia do Bloco de Notas.

  4. Em um servidor, abra um prompt de comando administrativo.

  5. Execute o script usando o seguinte comando:
    cscript.exe FixSoftBlockSummaries.js

Aguarde a conclusão do script e a sincronização da configuração. Em seguida, as informações sobre os usuários que substituíram as regras de negação são criadas corretamente. O script não pode corrigir esse problema para dados de resumo anteriores.

O problema foi corrigido?

  • Verifique se o problema foi corrigido. Se o problema estiver corrigido, terminou esta secção. Se o problema não estiver corrigido, pode contactar o suporte.
  • Agradecemos os seus comentários. Para fornecer feedback ou relatar quaisquer problemas com esta solução, deixe um comentário no blog "Fix it for me" ou envie-nos um e-mail.

Estado

A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".

Referências

Para obter mais informações sobre a terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

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