Mover bases de dados do servidor de relatórios para outro computador (modo nativo SSRS)

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

Podes mover as bases de dados do servidor de relatórios que usas numa instalação do SQL Server para uma instância que esteja num computador diferente.

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

  • Desprenda e prenda. Esta abordagem oferece a forma mais fácil de mover as bases de dados do servidor de relatórios, mas é necessário desligar o servidor de relatórios enquanto as bases de dados estão desligadas.
  • Backup e restauração. Esta abordagem minimiza as interrupções do serviço, mas deve executar comandos Transact-SQL (T-SQL) para executar as operações.
  • Copiar. Copiar a base de dados não é recomendado se usares o Assistente de Copiar Base de Dados. Não preserva as definições de permissões na base de dados.

Este artigo mostra-lhe como usar a abordagem de desligar e anexar e a de backup e restauração.

Pré-requisitos

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

Prepare-se para mover as bases de dados

Tenha em mente os seguintes pontos ao mover bases de dados de servidores de relatórios:

  • Tem de mover ou copiar as bases de dados reportserver e reportservertempdb em simultâneo. Uma instalação SSRS requer ambas as bases de dados.
  • O nome da base de dados temporária deve ser o mesmo que o nome da base de dados principal do servidor de relatórios, mas com um sufixo tempdb .
  • Mover uma base de dados não altera as operações agendadas que estão atualmente definidas para itens do servidor de relatórios.
    • Os horários são recriados na primeira vez que reinicia o serviço do servidor de relatórios.
    • Os trabalhos de agente do SQL Server usados para desencadear um agendamento são recriados na nova instância da base de dados. Não tens de mover os trabalhos para o novo computador, mas podes querer eliminar os trabalhos que já não são usados no computador atual.
    • Subscrições, relatórios em cache e snapshots são preservados na base de dados movida. Se um snapshot não captar dados atualizados depois de mover a base de dados, limpe as opções de snapshot. Depois seleciona Aplicar para guardar as alterações, recria o calendário e seleciona Aplicar novamente para guardar as alterações.
    • Os dados temporários de relatórios e sessões de utilizador que estão armazenados na base de dados temporária persistem quando se move essa base de dados.

Important

Os passos deste artigo são recomendados quando a relocalização da base de dados do servidor de relatórios é a única alteração que faz na instalação existente. Quando migra uma instalação SSRS inteira, precisa de reconfigurar a ligação e redefinir as chaves de encriptação. Por exemplo, estes passos são necessários quando move a base de dados e altera a identidade do serviço Windows do servidor de relatórios que utiliza a base de dados.

Separe e anexe as bases de dados do servidor de relatórios

Se conseguires desligar o servidor de relatórios, podes usar a abordagem de desligar e anexar. Especificamente, separas as bases de dados da tua instância atual do SQL Server. Depois move-as e anexas-as à instância que queres usar. Esta abordagem preserva permissões nas bases de dados.

Depois de mover as bases de dados, deve reconfigurar a ligação do servidor de relatórios para a base de dados do servidor de relatórios. Se executar uma implementação escalonável, deve reconfigurar a ligação à base de dados do servidor de relatórios para cada servidor de relatórios na implementação.

Para usar a abordagem de desanexar e anexar, siga os passos nas secções seguintes.

Desanexar as bases de dados

  1. Abrir o Gestor de Configuração do Servidor de Relatórios.

  2. Usa a página de Chaves de Encriptação para fazer backup das chaves de encriptação da base de dados do servidor de relatórios que queres mover.

  3. Use a página de Estado do Servidor de Relatórios para parar o serviço do servidor de relatórios.

  4. Abre o SQL Server Management Studio e liga-te à instância do SQL Server que aloja as bases de dados do servidor de relatórios.

  5. Clique com o botão direito na base de dados do servidor de relatórios, selecione Tarefas e depois selecione Desanexar. Repita este passo para a base de dados temporária do servidor de relatórios.

Anexar as bases de dados

  1. Encontre os ficheiros .mdf e .ldf da sua instância SQL Server atual. Estão localizados na pasta de Dados.

    Captura de ecrã do Explorador de Ficheiros. Na pasta Data, os ficheiros .mdf e .ldf são destacados para a base de dados do servidor de relatórios e para a base de dados temporária.

  2. Copia ou move os ficheiros .mdf e .ldf para a pasta Data da instância SQL Server que queres usar. Como está a mover duas bases de dados, certifique-se de que move ou copia os quatro ficheiros.

  3. No SQL Server Management Studio, abra uma ligação à nova instância do SQL Server que aloja as bases de dados do servidor de relatórios.

  4. Clique com o botão direito no nó Bases de Dados e, depois, selecione Anexar.

  5. Selecione Adicionar para selecionar os ficheiros da base de dados do servidor de relatórios .mdf e .ldf que pretende anexar. Repita este passo para a base de dados temporária do servidor de relatórios.

Conclua a configuração

  1. Verifica se as bases de dados que anexaste têm o papel RSExecRole . Deve configurar o RSExecRole para permissões de seleção, inserção, atualização, eliminação e referência nas tabelas da base de dados do servidor de relatórios, e para executar permissões nos procedimentos armazenados. Para mais informações, consulte Criar o RSExecRole.

  2. Inicie o Gestor de Configuração do Servidor de Relatórios e abra uma ligação ao servidor de relatórios.

  3. Na página da Base de Dados, selecione a nova instância do SQL Server e depois selecione Conectar.

  4. Selecione a base de dados do servidor de relatórios que acabou de mover e depois selecione Aplicar.

  5. Na página de Chaves de Encriptação, selecione Restaurar. Especifique o ficheiro que contém a cópia de segurança das chaves e a palavra-passe para desbloquear o ficheiro.

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

Faça backup e restaure as bases de dados do servidor de relatórios

Se não conseguir desligar o servidor de relatórios, pode usar a abordagem de backup e restauro para realocar as bases de dados do servidor de relatórios. Com esta abordagem, deve usar instruções T-SQL.

Os passos nas secções seguintes mostram-lhe como fazer backup e restaurar as bases de dados e também como configurar o servidor de relatórios para usar as bases de dados na nova instância do servidor.

Uso BACKUP e COPY_ONLY para fazer backup das bases de dados do servidor de relatórios

Para fazer backup das bases de dados, abra o SQL Server Management Studio e depois execute as seguintes instruções numa janela de consulta. Estas afirmações usam o COPY_ONLY argumento e fazem backup tanto das bases de dados como dos ficheiros de registo.

Antes de executar estas instruções, substitua o <marcador de caminho para a pasta> de backup pelo caminho para a pasta Backup da sua 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

Use RESTORE e MOVE para realocar as bases de dados do servidor de relatórios

Para restaurar as bases de dados, abra o SQL Server Management Studio e depois execute as seguintes instruções numa janela de consulta.

Nestas declarações:

  • As RESTORE operações para a base de dados e os ficheiros de registo são executadas separadamente.

  • O MOVE argumento fornece uma forma de especificar um caminho. Este argumento utiliza o nome lógico do ficheiro de dados. Para encontrar o nome lógico, execute a seguinte instrução. Primeiro, substitua o marcador `<path-to-report-server-database-backup-file>` pelo caminho para o ficheiro de cópia de segurança da base de dados do seu servidor de relatórios, por exemplo `C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak`.

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

    Pode encontrar o nome lógico na coluna LogicalName da saída.

    Captura de ecrã de uma RESTORE FILELISTONLY declaração numa janela de consulta do SQL Server Management Studio. No resultado, a coluna LogicalName está destacada.

    Pode executar uma instrução semelhante para encontrar o nome lógico da sua base de dados temporária:

    RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • O argumento FILE fornece uma forma de especificar a posição do ficheiro de registo a restaurar. Para encontrar a posição do ficheiro, execute a seguinte instrução. Primeiro, substitua o marcador de posição <path-to-report-server-database-backup-file> pelo caminho do ficheiro de cópia de segurança da base de dados do seu servidor de relatórios, como C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.

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

    Podes encontrar a posição do ficheiro na coluna Posição da saída.

    Captura de ecrã de uma RESTORE HEADERONLY declaração numa janela de consulta do SQL Server Management Studio. Na saída, a coluna Posição está destacada.

    Pode executar uma instrução semelhante para encontrar a posição do ficheiro da sua base de dados temporária:

    RESTORE HEADERONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • O NORECOVERY argumento realiza a restauração inicial. Este argumento mantém a base de dados num RESTORING estado, o que lhe dá tempo para rever cópias de segurança dos registos e determinar qual restaurar.

  • O passo final repete a RESTORE operação com o RECOVERY argumento.

Antes de executar estas instruções, substitua os seguintes marcadores por valores apropriados:

Marcador de posição Description Exemplo
<caminho-para-a-pasta-de-cópia-de-segurança> O caminho para a pasta Backup da sua instância atual C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP
<caminho-para-nova-pasta-de-dados> O caminho para a pasta Data da sua nova instância C:\Program Files\Microsoft SQL Server\MSSQL16.NEWINSTANCE\MSSQL\DATA
<report-server-database-logical-name> O nome lógico da base de dados do seu servidor de relatórios ReportServer
<report-server-database-log-logical-name> O nome lógico do ficheiro de registo da base de dados do seu servidor de relatórios ReportServer_log
<posição-do-ficheiro-de-registo-da-base-de-dados-do-servidor-de-relatórios> A posição do ficheiro de registo da base de dados do servidor de relatórios 2
<nome lógico da base de dados temporária> O nome lógico da sua base de dados temporária ReportServerTempDB
<nome-lógico-do-registo-da-base-de-dados-temporária> O nome lógico do seu registo temporário da base de dados ReportServerTempDB_log
<posição-do-ficheiro-de-registo-da-base-de-dados-temporária> A posição do ficheiro do registo temporário da base de dados 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 ligação à base de dados do servidor de relatórios

  1. Inicie o Gestor de Configuração do Servidor de Relatórios e abra uma ligação ao servidor de relatórios.

  2. Na página de Base de Dados, selecione Alterar Base de Dados.

  3. Na página Alterar Base de Dados, selecione Escolher uma base de dados existente do servidor de relatórios e depois selecione Próximo.

  4. Para o Nome do Servidor, introduza a instância do SQL Server que agora hospeda a base de dados do servidor de relatórios e depois selecione Testar Ligação.

  5. Depois de testares a ligação, seleciona Próximo.

  6. Para a Base de Dados do Servidor de Relatórios, selecione a base de dados do servidor de relatórios que pretende usar e depois selecione Próximo.

  7. Em Credenciais, especifique as credenciais que o servidor de relatórios utiliza para se ligar à base de dados do servidor de relatórios e depois selecione Próximo.

  8. Selecione Seguinte e, em seguida, selecione Concluir.

Note

Numa instalação SSRS, a instância do Mecanismo de Banco de Dados do SQL Server deve incluir o papel RSExecRole. A criação de funções, o registo de login e a atribuição de funções ocorrem quando utiliza o Gestor de Configuração do Servidor de Relatórios para definir a ligação à base de dados do servidor de relatórios. Se utilizar métodos alternativos, como o utilitário de linha de comandos rsconfig.exe, o servidor de relatórios não fica num estado operacional. Nesse caso, poderá ter de escrever código de Instrumentação de Gestão Windows (WMI) para disponibilizar o servidor de relatórios. Para mais informações, consulte o fornecedor de WMI Access the Reporting Services.