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

Aplica-se a: modo nativo do SQL Server Reporting Services (SSRS)

Você pode mover os bancos de dados do servidor de relatório usados em uma instalação do SQL Server para uma instância que esteja em um computador diferente.

O SQL Server fornece várias abordagens para mover bancos de dados:

  • Desconecte e anexe. Essa abordagem oferece a maneira mais fácil de mover os bancos de dados do servidor de relatório, mas você precisa colocar o servidor de relatório offline enquanto os bancos de dados estão desanexados.
  • Backup e restauração. Essa abordagem minimiza as interrupções de serviço, mas você deve executar comandos Transact-SQL (T-SQL) para executar as operações.
  • Copiar. Copiar o banco de dados não é recomendado se você usar o Assistente para Copiar Banco de Dados. Ele não preserva as configurações de permissão no banco de dados.

Este artigo mostra como usar a abordagem de desanexação e anexação e a abordagem de backup e restauração.

Pré-requisitos

  • Um servidor de relatório de modo nativo configurado que é usado em uma instalação do SQL Server.
  • Uma instância do SQL Server em um computador diferente.

Preparar-se para mover os bancos de dados

Lembre-se dos seguintes pontos ao mover bancos de dados do servidor de relatório:

  • Você deve mover ou copiar os bancos de dados reportserver e reportservertempdb juntos. Uma instalação do SSRS requer ambos os bancos de dados.
  • O nome do banco de dados temporário deve ser o mesmo que o nome do banco de dados do servidor de relatório primário, mas com um sufixo tempdb .
  • 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 que você reinicia o serviço de servidor de relatório.
    • Os trabalhos do SQL Server Agent usados para disparar um agendamento são recriados na nova instância do banco de dados. Você não precisa mover os trabalhos para o novo computador, mas talvez queira excluir os trabalhos que não são mais usados no computador atual.
    • Assinaturas, relatórios em cache e instantâneos são preservados no banco de dados movido. Se um snapshot não coletar dados atualizados depois que você mover o banco de dados, desmarque as opções de snapshot. Em seguida, selecione Aplicar para salvar suas alterações, recrie o agendamento e selecione Aplicar novamente para salvar suas alterações.
    • Os dados temporários de relatório e sessão de usuário armazenados no banco de dados temporário persistem quando você move esse banco de dados.

Importante

As etapas 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. Ao migrar uma instalação inteira do SSRS, você precisa reconfigurar a conexão e redefinir as chaves de criptografia. Por exemplo, essas etapas são necessárias quando você move o banco de dados e altera a identidade do serviço Windows do servidor de relatório que usa o banco de dados.

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

Se você puder colocar o servidor de relatório offline, poderá usar a abordagem de desanexar e anexar. Especificamente, você desanexa os bancos de dados da instância atual do SQL Server. Em seguida, você os move e os anexa à instância que deseja usar. Esta abordagem preserva as permissões nos bancos de dados.

Depois de mover os bancos de dados, reconfigure a conexão do servidor de relatório com o banco de dados. Se você executar uma implantação de expansão, deverá reconfigurar a conexão de banco de dados do servidor de relatório para cada servidor de relatório na implantação.

Para usar a abordagem de desanexação e anexação, siga as etapas nas seções a seguir.

Desanexar os bancos de dados

  1. Abra o Gerenciador de Configuração do Servidor de Relatório.

  2. Use a página Chaves de Criptografia para fazer backup das chaves de criptografia do banco de dados do servidor de relatório que você deseja mover.

  3. Use a página Status do Servidor de Relatório para interromper o serviço do servidor de relatório.

  4. Abra o SQL Server Management Studio e conecte-se à instância do SQL Server que hospeda os bancos de dados do servidor de relatório.

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

Anexar os bancos de dados

  1. Localize os arquivos .mdf e .ldf da instância atual do SQL Server. Eles estão localizados na pasta Dados.

    Captura de tela do Explorador de Arquivos. Na pasta Dados, os arquivos .mdf e .ldf são realçados para o banco de dados do servidor de relatório e o banco de dados temporário.

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

  3. No SQL Server 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.

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

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

Concluir a configuração

  1. Verifique se os bancos de dados anexados têm a função RSExecRole . Você deve configurar RSExecRole para permissões de seleção, inserção, atualização, exclusão e referência nas tabelas de banco de dados do servidor de relatório e executar permissões nos procedimentos armazenados. Para mais informações, veja Criar o RSExecRole.

  2. Inicie o Gerenciador de Configuração do Servidor de Relatório e abra uma conexão com o servidor de relatório.

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

  4. Selecione o banco de dados do servidor de relatório que você acabou de mover e selecione Aplicar.

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

  6. Reinicie o serviço do servidor de relatório.

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

Se você não puder colocar o servidor de relatório offline, poderá usar a abordagem de backup e restauração para realocar os bancos de dados do servidor de relatório. Com essa abordagem, você deve usar instruções T-SQL.

As etapas nas seções a seguir mostram como fazer backup e restaurar os bancos de dados e também como configurar o servidor de relatório para usar os bancos de dados na nova instância do servidor.

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

Para fazer backup dos bancos de dados, abra SQL Server Management Studio e execute as instruções a seguir em uma janela de consulta. Essas instruções usam o COPY_ONLY argumento e fazem backup de bancos de dados e arquivos de log.

Antes de executar essas instruções, substitua o espaço reservado path-to-backup-folder <> pelo caminho para a pasta Backup da instância atual, como C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP.

-- To permit log backups, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServer
   SET RECOVERY FULL

-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServer
TO DISK = '<path-to-backup-folder>\ReportServerExtraBackup.bak'
GO

-- If the ReportServerData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerData',
'<path-to-backup-folder>\ReportServerData.bak'

-- Create a logical backup device, ReportServerLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerLog',
'<path-to-backup-folder>\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, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServerTempdb
   SET RECOVERY FULL

-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServerTempdb
TO DISK = '<path-to-backup-folder>\ReportServerTempdbExtraBackup.bak'
GO

-- If the ReportServerTempDBData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',
'<path-to-backup-folder>\ReportServerTempDBData.bak'

-- Create a logical backup device, ReportServerTempDBLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',
'<path-to-backup-folder>\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

Para restaurar os bancos de dados, abra SQL Server Management Studio e execute as instruções a seguir em uma janela de consulta.

Nestas declarações:

  • As RESTORE operações do banco de dados e dos arquivos de log são executadas separadamente.

  • O MOVE argumento fornece uma maneira de especificar um caminho. Esse argumento usa o nome lógico do arquivo de dados. Para localizar o nome lógico, execute a instrução a seguir. Primeiro, substitua o espaço reservado <path-to-report-server-database-backup-file> pelo caminho para o arquivo de backup do banco de dados do servidor de relatório, como C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.

    RESTORE FILELISTONLY FROM DISK='<path-to-report-server-database-backup-file>';
    

    Você pode encontrar o nome lógico na coluna LogicalName da saída.

    Captura de tela de uma instrução RESTORE FILELISTONLY em uma janela de consulta do SQL Server Management Studio. Na saída, a coluna LogicalName é realçada.

    Você pode executar uma instrução semelhante para localizar o nome lógico do seu banco de dados temporário:

    RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • O FILE argumento fornece uma maneira de especificar a posição do arquivo de log a ser restaurado. Para localizar a posição do arquivo, execute a instrução a seguir. Primeiro, substitua o espaço reservado <path-to-report-server-database-backup-file> pelo caminho para o arquivo de backup do banco de dados do servidor de relatório, como C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.

    RESTORE HEADERONLY FROM DISK='<path-to-report-server-database-backup-file>';
    

    Você pode encontrar a posição do arquivo na coluna Posição da saída.

    Captura de tela de uma instrução RESTORE HEADERONLY em uma janela de consulta do SQL Server Management Studio. Na saída, a coluna Posição é realçada.

    Você pode executar uma instrução semelhante para encontrar a posição do arquivo do banco de dados temporário:

    RESTORE HEADERONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • O NORECOVERY argumento executa a restauração inicial. Esse argumento mantém o banco de dados em um RESTORING estado, o que lhe dá tempo para revisar os backups de log para determinar qual deles restaurar.

  • A etapa final repete a operação RESTORE com o argumento RECOVERY.

Antes de executar essas instruções, substitua os seguintes espaços reservados por valores apropriados:

Espaço reservado Descrição Exemplo
<caminho para a pasta de backup> O caminho para a pasta Backup da instância atual C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP
<caminho para a nova pasta de dados> O caminho para a pasta Data da nova instância C:\Program Files\Microsoft SQL Server\MSSQL16.NEWINSTANCE\MSSQL\DATA
<nome-lógico-do-banco de dados-do-servidor-de-relatório> O nome lógico do banco de dados do servidor de relatório ReportServer
<nome lógico do log do banco de dados do servidor de relatório> O nome lógico do log do banco de dados do servidor de relatório ReportServer_log
<posição do arquivo de log do banco de dados do servidor de relatório> A posição do arquivo de log do banco de dados do servidor de relatório 2
<nome lógico do banco de dados temporário> O nome lógico do seu banco de dados temporário ReportServerTempDB
<nome lógico de log de banco de dados temporário> O nome lógico do log do banco de dados temporário ReportServerTempDB_log
<posição temporária do arquivo de log do banco de dados> A posição do arquivo de log do banco de dados temporário 2
-- Restore the report server database and move it to the new instance folder.
RESTORE DATABASE ReportServer
   FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
   WITH NORECOVERY,
      MOVE '<report-server-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer.mdf',
      MOVE '<report-server-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer_Log.ldf';
GO

-- Restore the report server log file to the new instance folder.
RESTORE LOG ReportServer
   FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
   WITH NORECOVERY, FILE=<report-server-database-log-file-position>,
      MOVE '<report-server-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer.mdf',
      MOVE '<report-server-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer_Log.ldf';
GO

-- Restore and move the report server temporary database.
RESTORE DATABASE ReportServerTempdb
   FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
   WITH NORECOVERY,
      MOVE '<temporary-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB.mdf',
      MOVE '<temporary-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO

-- Restore the temporary database log file to the new instance folder.
RESTORE LOG ReportServerTempdb
   FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
   WITH NORECOVERY, FILE=<temporary-database-log-file-position>,
      MOVE '<temporary-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB.mdf',
      MOVE '<temporary-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO

-- Perform the final restore operation on the report database.
RESTORE DATABASE ReportServer
   WITH RECOVERY
GO

-- Perform the final restore operation on the temporary database.
RESTORE DATABASE ReportServerTempDB
   WITH RECOVERY
GO

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

  1. Inicie o Gerenciador de Configuração do Servidor de Relatório e abra uma conexão com o servidor de relatório.

  2. Na página Banco de dados, clique em Alterar Banco de Dados.

  3. Na página Alterar Banco de Dados, selecione Escolher um banco de dados de servidor de relatório existente e, em seguida, selecione Avançar.

  4. Em Nome do Servidor, insira a instância do SQL Server que agora hospeda o banco de dados do servidor de relatório e selecione Testar Conexão.

  5. Depois de testar a conexão, selecione Avançar.

  6. Para Banco de Dados do Servidor de Relatório, selecione o banco de dados do servidor de relatório que você deseja usar e selecione Avançar.

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

  8. Selecione Avançar e, em seguida, selecione Concluir.

Observação

Em uma instalação do SSRS, a instância do Mecanismo de Banco de Dados do SQL Server deve incluir a função RSExecRole . A criação de função, o registro de logon e as atribuições de função ocorrem quando você usa o Gerenciador de Configuração do Servidor de Relatório para definir a conexão de banco de dados do servidor de relatório. Se você usar abordagens alternativas, como o utilitário de prompt de comando rsconfig.exe, o servidor de relatório não estará em um estado de trabalho. Nesse caso, talvez seja necessário escrever o código WMI (Instrumentação de Gerenciamento do Windows) para disponibilizar o servidor de relatório. Para obter mais informações, consulte Acessar o provedor WMI do Reporting Services.