Relatórios de cache (SSRS)

Um servidor de relatórios pode armazenar em cache uma cópia de um relatório processado e devolver essa cópia quando um utilizador abre o relatório. Para um utilizador, a única evidência disponível para indicar que o relatório é uma cópia em cache é a data e hora em que o relatório foi publicado. Se a data ou hora não estiver atualizada e o relatório não for um snapshot, o relatório foi recuperado da cache.

A cache pode encurtar o tempo necessário para recuperar um relatório se este for grande ou acedido frequentemente. Se o servidor for reiniciado, todas as instâncias em cache são restabelecidas quando o serviço Web do Servidor de Relatórios volta a estar online.

O cache é uma técnica de melhoria de desempenho. O conteúdo da cache é volátil e pode mudar à medida que os relatórios são adicionados, substituídos ou removidos. Se precisar de uma estratégia de cache mais previsível, deve criar um instantâneo do relatório. Para mais informações, consulte Propriedades de processamento de relatórios de Conjunto.

Note

O Reporting Services armazena ficheiros temporários numa base de dados para suportar sessões de utilizador e processamento de relatórios. Estes ficheiros são armazenados em cache para uso interno e para suportar uma experiência de visualização consistente durante uma única sessão do navegador. Para mais informações sobre como os ficheiros temporários de uso interno são armazenados em cache, consulte Base de Dados do Servidor de Relatórios (Modo Nativo SSRS).

Instâncias armazenadas em cache

Uma instância em cache de um relatório baseia-se no formato intermédio de um relatório. O servidor de relatórios geralmente armazena em cache uma instância de um relatório com base no nome do relatório. No entanto, se um relatório puder conter dados diferentes com base nos parâmetros da consulta, múltiplas versões do relatório podem ser armazenadas em cache a qualquer momento. Por exemplo, suponha que tem um relatório parametrizado que recebe um código de região como valor de parâmetro. Se quatro utilizadores diferentes especificarem quatro códigos de região únicos, são criadas quatro cópias em cache.

O primeiro utilizador que executa o relatório com um código de região único cria um relatório em cache que contém dados dessa região. Os utilizadores subsequentes que solicitam o relatório usando o mesmo código de região recebem a cópia em cache.

Nem todos os relatórios podem ser armazenados em cache. Se um relatório incluir dados dependentes do utilizador, pedir credenciais aos utilizadores ou usar autenticação Windows, não pode ser armazenado em cache.

Atualizar a cache

Um relatório em cache é substituído por uma versão mais recente quando um utilizador seleciona o relatório após a cópia anteriormente em cache ter expirado. Relatórios configurados para correr como instâncias em cache são removidos da cache em intervalos regulares com base nas definições de expiração. Pode definir a expiração de um relatório em minutos ou numa hora agendada, conforme determinado pelo requisito de imediatismo dos dados. Não podes apagar relatórios diretamente da cache a menos que uses a API SOAP.

Para configurar a expiração da cache, pode usar um cronograma partilhado ou um cronograma específico do relatório. Se usares um horário partilhado e o horário for pausado mais tarde, a cache não expira enquanto o horário estiver inoperacional. Se o cronograma partilhado for posteriormente eliminado, uma cópia das definições de horários é guardada como um cronograma específico do relatório.

Se um calendário expirar, ou se o motor de agendamento não estiver disponível numa data de expiração da cache, o servidor de relatórios executa um relatório em tempo real. Esta ação continua até que as operações programadas possam ser retomadas. As operações agendadas podem ser retomadas quando prolonga o horário ou inicia o serviço de agendamento.

Pré-carregar a cache

Para melhorar o desempenho do servidor, podes pré-carregar a cache. Pode pré-carregar a cache com uma coleção de instâncias parametrizadas de relatórios de duas formas:

  1. Crie um plano de atualização de cache. Quando cria um plano de atualização, pode especificar um cronograma para um único relatório ou especificar um cronograma partilhado.

  2. Crie uma subscrição orientada por dados que utilize o Null Delivery Provider. Quando especifica o Fornecedor de Entrega Nulo como método de entrega na subscrição, o servidor de relatórios direciona a base de dados do servidor de relatórios como destino de entrega. O servidor utiliza uma extensão de renderização especializada chamada extensão de renderização nula. Ao contrário de outras extensões de entrega, o Null Delivery Provider não tem definições de entrega que possas configurar através de uma definição de subscrição.

Armazenar em cache um relatório é especialmente útil se quiser armazenar em cache múltiplas instâncias de um relatório parametrizado, onde diferentes valores de parâmetros são usados para produzir diferentes instâncias de relatório. Só pode especificar parâmetros baseados em consultas no relatório.

Quando especifica um horário ou quando cria a subscrição orientada por dados, agenda com que frequência os relatórios são entregues na cache. Para que novas cópias sejam entregues na cache, as cópias antigas têm de estar expiradas. Portanto, as propriedades de Execução do relatório devem ser configuradas para incluir definições de expiração da cache. A definição de expiração deve ser consistente com o agendamento da subscrição que definir. Por exemplo, se criares uma subscrição que funciona todas as noites, a cache também deverá expirar todas as noites antes do tempo de execução da subscrição. Se as propriedades de Execução não incluírem tempos de validade, as entregas mais recentes são ignoradas. Para mais informações sobre planos de atualização de cache, consulte Agendas. Para mais informações sobre a definição de propriedades, consulte Propriedades de processamento de relatórios de Conjunto. Para mais informações sobre o uso de subscrições baseadas em dados, consulte Subscrições orientadas por dados.

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

Um relatório 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 da fonte de dados mudam ou as opções de execução do relatório mudam. Se apagar um relatório armazenado na cache, a versão em cache também é eliminada.

Se um relatório não puder ser renderizado a partir de uma instância em cache por qualquer motivo, o servidor de relatórios executa novamente o relatório. Esta ação assegura que o relatório é gerado com os valores corretos e atualizados dos parâmetros.