none
cache do reporting services RRS feed

  • Pergunta

  •  criei um relatório aonde uso uma procedure que monta a query de select dinamicamente com base nos parâmetros de entrada da mesma procedure. Esses parâmetros são ligados aos report parameters do relatório. Assim, por exemplo, se o usuário seleciona um intervalo de data específico como parâmetro, a query colocará um BETWEEN dataInicial e dataFinal.

    Vi que o reporting services possui recurso de cache. Nesse caso que descrevo, o cache funcionaria ? Existe algum tamanho para o cache ? Ele registra apenas as páginas mais usadas do relatório ? Ou seria baseado na mesma query e então se eu montasse dinamicamente ela, não seria cacheada.

    sexta-feira, 13 de fevereiro de 2009 11:06

Respostas

  •    Spitzmann,

    Um servidor de relatório pode armazenar em cache uma cópia de um relatório processado e devolvê-la quando um usuário abrir o relatório. Para o usuário, a única evidência disponível indicativa de que o relatório é uma cópia armazenada em cache são os dados de data e hora de processamento do relatório. Se a data ou a hora não for atual e o relatório não for um instantâneo, ele terá sido recuperado do cache.

    O armazenamento em cache pode diminuir o tempo necessário para recuperar um relatório, caso ele seja grande ou acessado freqüentemente. Se o servidor for reinicializado, todas as instâncias armazenadas em cache serão reintegradas quando o serviço da Web do Servidor de Relatório ficar online.

    O armazenamento em cache é uma técnica de aprimoramento de desempenho. O conteúdo do cache é volátil e pode mudar à medida que relatórios são adicionados, substituídos ou removidos. Se for necessária uma estratégia mais previsível de armazenamento em cache, você deverá criar um instantâneo de relatório. Para obter mais informações, consulte Definindo propriedades do processamento de relatórios.

    Reporting Services armazena arquivos temporários em um banco de dados para oferecer suporte a sessões de usuário e processamento de relatório. Esses arquivos são armazenados em cache para uso interno e para oferecer suporte a uma experiência de visualização consistente durante uma única sessão de navegador.

    Instâncias armazenadas em cache

    Uma instância armazenada em cache de um relatório baseia-se no formato intermediário de um relatório. O servidor de relatório geralmente armazena em cache uma instância de um relatório com base no nome de relatório. No entanto, se um relatório puder conter dados diferentes com base nos parâmetros de consulta, várias versões do relatório poderão ser armazenadas em cache em um determinado momento. Por exemplo, suponha que você tem um relatório com parâmetros que assume um código de região como um valor de parâmetro. Se quatro usuários diferentes especificarem quatro códigos de região exclusivos, serão criadas quatro cópias armazenadas em cache.

    O primeiro usuário que executar o relatório com um único código de região cria um relatório armazenado em cache que contém dados para essa região. Usuários subseqüentes que solicitam o relatório usando o mesmo código de região obtêm a cópia armazenada em cache.

    Nem todos os relatórios podem ser armazenados em cache. Se um relatório incluir dados que dependem do usuário, ele solicitará aos usuários as credenciais ou usará a Autenticação do Windows, ele não poderá ser armazenado em cache.

    Atualizando o cache

    Um relatório armazenado em cache é substituído por uma versão mais nova quando um usuário o seleciona após a expiração da cópia anteriormente armazenada em cache. Os relatórios configurados para execução como instâncias armazenadas em cache são removidos do cache em intervalos com base nas configurações de expiração. Você pode definir a expiração de um relatório em minutos ou em um horário agendado, conforme determinado pela condição de necessidade imediata dos dados. Não é possível excluir relatórios do cache diretamente, a menos que você use a API SOAP.

    Para configurar a expiração de cache, você pode usar uma agenda compartilhada ou específica do relatório. Se você usar uma agenda compartilhada e ela sofrer pausa subseqüente, o cache não expirará enquanto a agenda estiver inoperante. Se a agenda compartilhada for excluída em seguida, terá uma cópia salva como agenda específica do relatório.

    Se uma agenda expirar ou se o mecanismo de agendamento não estiver disponível em uma data de expiração de cache, o servidor de relatório executará um relatório dinâmico até que as operações agendadas possam ser retomadas (estendendo a agenda ou iniciando o serviço de agendamento).

    Pré-carregando o cache

    Para melhorar o desempenho do servidor, você pode pré-carregar o cache. Para pré-carregá-lo com uma coleção de instâncias de relatórios com parâmetros, crie uma assinatura controlada por dados que use o Provedor de Entrega Nulo. Quando você especificar o Provedor de Entrega Nulo como método de entrega na assinatura, o servidor de relatório apontará o banco de dados do servidor de relatório como o destino de entrega e usará uma extensão de renderização especializada chamada de extensão de renderização nula.

    Esse recurso é especialmente útil se você quiser armazenar em cache várias instâncias de um relatório com parâmetros no qual valores de parâmetros diferentes são usados para produzir instâncias de relatório diferentes. Observe que você só pode especificar parâmetros com base em consultas no relatório. Em comparação com outras extensões de entrega, o Provedor de Entrega Nulo não tem configurações de entrega que podem ser configuradas por uma definição de assinatura.

    Quando você criar a assinatura controlada por dados, deverá agendar com que freqüência serão entregues os relatórios ao cache. Para que cópias novas sejam entregues ao cache, as cópias antigas devem ter expirado. Portanto, as propriedades de Execução do relatório devem ser configuradas para incluir as configurações de expiração de cache. A configuração de expiração deve ser consistente com a agenda de assinatura definida. Por exemplo, se você criar uma assinatura que é executada todas as noites, o cache também deverá expirar todas as noites antes do tempo de execução da assinatura. Se as propriedades de Execução não incluírem momentos de expiração, novas entregas serão desconsideradas. Para obter mais informações sobre a definição de propriedades, consulte Definindo propriedades do processamento de relatórios. Para obter mais informações sobre o uso de assinaturas controladas por dados, consulte Assinaturas controladas por dados.

    Condições que causam a expiração de cache

    Um relatório armazenado em cache é invalidado em resposta aos seguintes eventos: a definição do relatório é modificada, os parâmetros do relatório são modificados, as credenciais de fonte de dados mudam ou as opções de execução do relatório mudam. Se você excluir um relatório armazenado em cache, a versão armazenada também será excluída.

    Se um relatório não puder ser processado a partir de uma instância armazenada em cache por qualquer motivo (por exemplo, se os valores de parâmetro que um usuário especifica forem diferentes daqueles usados para produzir o relatório armazenado em cache), o servidor de relatório executará novamente o relatório.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    • Marcado como Resposta Richard Juhasz quinta-feira, 20 de setembro de 2012 16:57
    sexta-feira, 13 de fevereiro de 2009 13:24