Movendo bancos de dados do servidor de relatório para outro computador (modo nativo do SSRS)

É possível mover os bancos de dados do servidor de relatório usados em uma instalação do Mecanismo de Banco de Dados do SQL Server para uma instância que está em outro computador. Os bancos de dados reportserver e reportservertempdb devem ser movidos ou copiados em conjunto. Uma instalação do Reporting Services requer os dois bancos de dados. Você deve relacionar o banco de dados reportservertempdb pelo nome ao banco de dados reportserver primário que estiver movendo.

Aplica-se a: Reporting Services modo nativo.

Mover um banco de dados não altera as operações agendadas que estão definidas atualmente para itens de servidor de relatório.

  • As agendas são recriadas na primeira vez em que o serviço do servidor de relatório for reiniciado.

  • Trabalhos do SQL Server Agent que são usados para acionar uma agenda são recriados na nova instância do banco de dados. Não é necessário mover os trabalhos para o novo computador, mas você pode excluir os trabalhos que não são mais usados.

  • Assinaturas, relatórios em cache e instantâneos são preservados no banco de dados movido. Se um instantâneo não estiver pegando dados atualizados depois que o banco de dados for movido, limpe as opções do instantâneo. Em seguida, selecione Aplicar para salvar as alterações, recrie a agenda e selecione Aplicar novamente para salvar as alterações.

  • Os dados do relatório temporário e da sessão de usuário que são armazenados em reportservertempdb são mantidos quando o banco de dados é movido.

O SQL Server fornece várias abordagens para mover bancos de dados, inclusive backup e restauração, anexação e desanexação e cópia. Nem todas as abordagens são apropriadas para realocar um banco de dados existente em uma nova instância do servidor. A abordagem que deve ser usada para mover o banco de dados do servidor de relatório varia dependendo dos requisitos de disponibilidade do sistema. O modo mais fácil para mover os bancos de dados do servidor de relatório é anexá-los e desanexá-los. No entanto, esta abordagem requer que o servidor de relatório fique offline enquanto o banco de dados é desanexado. As ações de backup e a restauração são as melhor opções se você desejar minimizar as interrupções de serviço, mas é necessário executar os comandos Transact-SQL para efetuar as operações. Copiar o banco de dados não é recomendado, especialmente ao usar o Assistente de Cópia de Banco de Dados. Ele não preserva as configurações de permissão no banco de dados.

Importante

As etapas descritas neste artigo são recomendadas quando a realocação do banco de dados do servidor de relatório é a única alteração feita na instalação existente. Migrar uma instalação inteira do Reporting Services requer reconfiguração de conexão e uma restauração de chave de criptografia. Por exemplo, essa configuração é necessária ao mover o banco de dados e alterar a identidade do serviço Servidor de Relatório do Windows que usa o banco de dados.

Desanexar e anexar os bancos de dados do servidor de relatório

Se conseguir colocar o servidor de relatório offline, você poderá desanexar os bancos de dados para movê-los para a instância do SQL Server a ser usada. Esta abordagem preserva as permissões nos bancos de dados. Se estiver usando um banco de dados do SQL Server, é necessário move-lo para outra instância do SQL Server. Depois de mover os bancos de dados, reconfigure a conexão do servidor de relatório com o banco de dados. Se você estiver executando uma implantação de expansão, é necessário reconfigurar a conexão do banco de dados do servidor de relatório para cada servidor de relatório da implantação.

Realize as etapas a seguir para mover os bancos de dados:

  1. Faça o backup das chaves de criptografia para o banco de dados do servidor de relatório que deseja mover. Você pode usar a ferramenta Configuração do Reporting Services para fazer o backup das chaves.

  2. Pare o serviço do servidor de relatório. Você pode usar a ferramenta Configuração do Reporting Services para interromper o serviço.

  3. Inicie o SQL Server Management Studio e abra uma conexão com a instância do SQL Server que hospeda os bancos de dados do servidor de relatório.

  4. Clique com o botão direito do mouse no banco de dados do servidor de relatório, aponte para Tarefas e selecione Desanexar. Repita esta etapa para o banco de dados temporário do servidor de relatório.

  5. Copie ou mova os arquivos .mdf e .ldf para a pasta Dados da instância do SQL Server que você deseja usar. Como dois bancos de dados estão sendo movidos, certifique-se de mover ou copiar os quatro arquivos.

  6. No Management Studio, abra uma conexão com a nova instância do SQL Server que hospeda os bancos de dados do servidor de relatório.

  7. Clique com o botão direito do mouse no nó Bancos de dados e selecione Anexar.

  8. Selecione Adicionar para selecionar os arquivos .mdf e .ldf do banco de dados do servidor de relatórios que deseja anexar. Repita esta etapa para o banco de dados temporário do servidor de relatório.

  9. Após anexar os bancos de dados, verifique se RSExecRole é uma função de banco de dados no banco de dados do servidor de relatório e no banco de dados temporário. RSExecRole deve ter permissões para selecionar, inserir, atualizar, excluir e fazer referência nas tabelas do banco de dados do servidor de relatório e permissões de execução nos procedimentos armazenados. Para mais informações, veja Criar o RSExecRole.

  10. Inicie a ferramenta Configuração do Reporting Services e abra uma conexão com o servidor de relatório.

  11. Na página do Banco de dados, selecione a nova instância do SQL Server e selecione Conectar.

  12. Escolha o banco de dados do servidor de relatório que acabou de ser movido e selecione Aplicar.

  13. Na página Chaves de Criptografia, selecione Restaurar. Especifique o arquivo que contém a cópia de backup das chaves e a senha para desbloquear o arquivo.

  14. Reinicie o serviço Servidor de Relatório.

Fazer backup e restaurar os bancos de dados do servidor de relatório

Se não puder colocar o servidor de relatório offline, use o recurso de backup e restauração para realocar os bancos de dados do servidor de relatório. Você deve usar instruções Transact-SQLpara fazer o backup e a restauração. Depois de restaurar os bancos de dados, configure o servidor de relatório para usar o banco de dados na nova instância do servidor. Para obter mais informações, consulte as instruções no final deste artigo.

Usar BACKUP e COPY_ONLY para fazer backup dos bancos de dados do servidor de relatório

Ao fazer backup dos bancos de dados, defina o argumento COPY_ONLY. Faça backup dos bancos de dados e dos arquivos de log.

-- To permit log backups, before the full database backup, alter the database   
-- to use the full recovery model.  
USE master;  
GO  
ALTER DATABASE ReportServer  
   SET RECOVERY FULL  
  
-- If the ReportServerData device does not exist yet, create it.   
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerData',   
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\BACKUP\ReportServerData.bak'  
  
-- Create a logical backup device, ReportServerLog.  
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerLog',   
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\BACKUP\ReportServerLog.bak'  
  
-- Back up the full ReportServer database.  
BACKUP DATABASE ReportServer  
   TO ReportServerData  
   WITH COPY_ONLY  
  
-- Back up the ReportServer log.  
BACKUP LOG ReportServer  
   TO ReportServerLog  
   WITH COPY_ONLY  
  
-- To permit log backups, before the full database backup, alter the database   
-- to use the full recovery model.  
USE master;  
GO  
ALTER DATABASE ReportServerTempdb  
   SET RECOVERY FULL  
  
-- If the ReportServerTempDBData device does not exist yet, create it.   
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',   
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\BACKUP\ReportServerTempDBData.bak'  
  
-- Create a logical backup device, ReportServerTempDBLog.  
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',   
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\BACKUP\ReportServerTempDBLog.bak'  
  
-- Back up the full ReportServerTempDB database.  
BACKUP DATABASE ReportServerTempDB  
   TO ReportServerTempDBData  
   WITH COPY_ONLY  
  
-- Back up the ReportServerTempDB log.  
BACKUP LOG ReportServerTempDB  
   TO ReportServerTempDBLog  
   WITH COPY_ONLY  

Usando RESTORE e MOVE para realocar os bancos de dados do servidor de relatório

Ao restaurar os bancos de dados, inclua o argumento MOVE para especificar um caminho. Use o argumento NORECOVERY para executar a restauração inicial. Este argumento mantém o banco de dados no estado RESTORING, permitindo que você tenha tempo de revisar os backups de log para determinar qual deve ser restaurado. A etapa final repete a operação RESTORE com o argumento RECOVERY.

O argumento MOVE usa o nome lógico do arquivo de dados. Para localizar o nome lógico, execute a seguinte instrução: RESTORE FILELISTONLY FROM DISK='C:\ReportServerData.bak';.

O exemplo a seguir inclui o argumento FILE para especificar a posição do arquivo de log a ser restaurado. Para localizar a posição do arquivo, execute a seguinte instrução: RESTORE HEADERONLY FROM DISK='C:\ReportServerData.bak';.

Ao restaurar o banco de dados e os arquivos de log, execute cada operação RESTORE separadamente.

-- Restore the report server database and move to new instance folder   
RESTORE DATABASE ReportServer  
   FROM DISK='C:\ReportServerData.bak'  
   WITH NORECOVERY,   
      MOVE 'ReportServer' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer.mdf',   
      MOVE 'ReportServer_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer_Log.ldf';  
GO  
  
-- Restore the report server log file to new instance folder   
RESTORE LOG ReportServer  
   FROM DISK='C:\ReportServerData.bak'  
   WITH NORECOVERY, FILE=2  
      MOVE 'ReportServer' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer.mdf',   
      MOVE 'ReportServer_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer_Log.ldf';  
GO  
  
-- Restore and move the report server temporary database  
RESTORE DATABASE ReportServerTempdb  
   FROM DISK='C:\ReportServerTempDBData.bak'  
   WITH NORECOVERY,   
      MOVE 'ReportServerTempDB' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServerTempDB.mdf',   
      MOVE 'ReportServerTempDB_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\REportServerTempDB_Log.ldf';  
GO  
  
-- Restore the temporary database log file to new instance folder   
RESTORE LOG ReportServerTempdb  
   FROM DISK='C:\ReportServerTempDBData.bak'  
   WITH NORECOVERY, FILE=2  
      MOVE 'ReportServerTempDB' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServerTempDB.mdf',   
      MOVE 'ReportServerTempDB_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\REportServerTempDB_Log.ldf';  
GO  
  
-- Perform final restore  
RESTORE DATABASE ReportServer  
   WITH RECOVERY  
GO  
  
-- Perform final restore  
RESTORE DATABASE ReportServerTempDB  
   WITH RECOVERY  
GO  

Como configurar a conexão do banco de dados do servidor de relatório

  1. Inicie o Gerenciador de Configurações do Reporting Services e abra uma conexão com o servidor de relatório.

  2. Na página Banco de dados, selecione Alterar Banco de Dados. Selecione Próximo.

  3. Selecione Escolher um banco de dados existente do servidor de relatório. Selecione Próximo.

  4. Selecione o SQL Server que agora hospeda o banco de dados do servidor de relatório e escolha Testar Conexão. Selecione Avançar.

  5. Em Nome do Banco de Dados, selecione o banco de dados do servidor de relatório que deseja usar. Selecione Avançar.

  6. Em Credenciais, especifique as credenciais que o servidor de relatório usa para conectar-se ao banco de dados do servidor de relatório. Selecione Avançar.

  7. Selecione Avançar e, em seguida, escolha Concluir.

Observação

Uma instalação Reporting Services requer que a instância de SQL Server Mecanismo de Banco de Dados inclua a função RSExecRole. A criação de funções, o registro de logon e as atribuições de função ocorrem quando a conexão do banco de dados do servidor de relatório é definida por meio da ferramenta Configuração do Reporting Services. Se você usar abordagens alternativas (especificamente, se usar o utilitário de prompt de comando rsconfig.exe) para configurar a conexão, o servidor de relatório não estará em um estado de funcionamento. Talvez seja necessário gravar o código WMI para disponibilizar o servidor de relatório. Para obter mais informações, consulte Acessar o provedor WMI do Reporting Services.

Criar o RSExecRole
Iniciar e parar o serviço de servidor de relatório
Configurar uma conexão de banco de dados do Servidor de Relatório
Configurar a conta de execução não assistida
Gerenciador de configuração do servidor de relatório
Utilitário rsconfig
Configurar e gerenciar chaves de criptografia
Banco de dados do servidor de relatório

Mais perguntas? Experimente perguntar no fórum do Reporting Services