Compartilhar via


Relatórios em cache (SSRS)

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 hora não for atual e o relatório não for um instantâneo, o relatório foi recuperado do cache.

O armazenamento em cache pode diminuir o tempo necessário para recuperar um relatório, caso ele seja grande ou acessado frequentemente. Se o servidor for reiniciado, todas as instâncias armazenadas em cache serão restabelecidas quando o serviço Web Report Server voltar a 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 Definir as propriedades do processamento de relatórios.

Observação

O Reporting Services armazena arquivos temporários em um banco de dados para dar 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. Para obter mais informações sobre como os arquivos temporários de uso interno são armazenados em cache, confira Banco de dados do servidor de relatório (modo nativo do SSRS).

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 subsequentes 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.

Atualizar 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 um agendamento compartilhado e o agendamento for pausado posteriormente, o cache não expirará enquanto o agendamento estiver inoperante. Se o agendamento compartilhado for excluído posteriormente, uma cópia das configurações do agendamento será salva como um agendamento específico do relatório.

Se uma agenda expirar ou se o mecanismo de agendamento não estiver disponível em uma data de expiração do cache, o servidor de relatório executará um relatório ativo. Essa ação continua até que as operações agendadas possam ser retomadas. As operações agendadas podem ser retomadas quando você estende a agenda ou inicia o serviço de agendamento.

Pré-carregar o cache

Para melhorar o desempenho do servidor, você pode pré-carregar o cache. Você pode pré-carregar o cache com uma coleção de instâncias de relatório parametrizadas de duas maneiras:

  1. Crie um plano de atualização de cache. Quando você cria um plano de atualização, pode especificar uma agenda para um único relatório ou pode especificar uma agenda compartilhada.

  2. Crie uma assinatura controlada por dados que usa o Provedor de Entrega Nulo. Quando você especifica o Provedor de Entrega Nulo como método de entrega na assinatura, o servidor de relatório direciona o banco de dados do servidor de relatório como destino de entrega. O servidor usa uma extensão de renderização especializada chamada extensão de renderização nula. 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.

Armazenar um relatório em cache é especialmente útil se você deseja armazenar em cache múltiplas instâncias de um relatório parametrizado, em que diferentes valores de parâmetro são usados para produzir diferentes instâncias de relatório. Você só pode especificar parâmetros com base em consulta no relatório.

Ao especificar uma agenda ou criar uma assinatura controlada por dados, você agenda a frequência de entrega desses relatórios ao cache. Para que novas cópias sejam entregues ao cache, as cópias antigas precisam estar expiradas. 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 tempos de expiração, as entregas mais recentes serão desconsideradas. Para obter mais informações sobre planos de atualização de cache, consulte Agendamentos. Para obter mais informações sobre como definir as propriedades, consulte Definir as 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 renderizado de uma instância armazenada em cache por qualquer motivo, o servidor de relatório executará novamente o relatório. Essa ação garante que o relatório seja gerado com os valores de parâmetro corretos e atualizados.