Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
Abrir o Gestor de Configuração do Servidor de Relatórios.
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.
Use a página de Estado do Servidor de Relatórios para parar o serviço do servidor de relatórios.
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.
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
Encontre os ficheiros .mdf e .ldf da sua instância SQL Server atual. Estão localizados na pasta de Dados.
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.
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.
Clique com o botão direito no nó Bases de Dados e, depois, selecione Anexar.
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
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.
Inicie o Gestor de Configuração do Servidor de Relatórios e abra uma ligação ao servidor de relatórios.
Na página da Base de Dados, selecione a nova instância do SQL Server e depois selecione Conectar.
Selecione a base de dados do servidor de relatórios que acabou de mover e depois selecione Aplicar.
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.
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
RESTOREoperações para a base de dados e os ficheiros de registo são executadas separadamente.O
MOVEargumento 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.
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
FILEfornece 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, comoC:\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.
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
NORECOVERYargumento realiza a restauração inicial. Este argumento mantém a base de dados numRESTORINGestado, o que lhe dá tempo para rever cópias de segurança dos registos e determinar qual restaurar.O passo final repete a
RESTOREoperação com oRECOVERYargumento.
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
Inicie o Gestor de Configuração do Servidor de Relatórios e abra uma ligação ao servidor de relatórios.
Na página de Base de Dados, selecione Alterar Base de Dados.
Na página Alterar Base de Dados, selecione Escolher uma base de dados existente do servidor de relatórios e depois selecione Próximo.
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.
Depois de testares a ligação, seleciona Próximo.
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.
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.
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.