sexta-feira, 2 de agosto de 2019

Transferindo Report Server entre servidores

Se seu objetivo é transferir um report server de um servidor para outro, em especial entre versões atualizadas do SQL Server, é possível fazer com pouco esforço, de forma muito automatizada, usando uma ferramenta do próprio SQL Server Reporting Server (SSRS), com interface gráfica ou via console.

Na pasta de instalação do SSRS é possível encontrar a RS.exe, que faz o trabalho pesado de migrar relatórios e itens relacionados (pastas, data sources, etc). Em versões anteriores este .exe ficava na pasta Tools do SQL Server, mas agora a MS já melhorou isto alocando-o dentro da pasta do SSRS.

No link a seguir tem a RSMigrationTool com interface gráfica. Esta ferramenta também pode ser chamada via console.

https://www.microsoft.com/en-us/download/details.aspx?id=29560
Vídeo: https://www.youtube.com/watch?v=ZL8FqCcxBsU

A seguir temos as instruções para usar o RS.exe (sem firula, só console):
https://docs.microsoft.com/en-us/sql/reporting-services/tools/script-with-the-rs-exe-utility-and-the-web-service?view=sql-server-2017

Atenção: Lembre-se de conferir se o SQL Agent está rodando no servidor de destino para garantir que os jobs e agendamentos sejam executados.

Será necessário baixar um arquivo com as configurações do que deve ser baixado e que será usado como parâmetro no RS.exe: ssrs_migration.rss.
https://docs.microsoft.com/en-us/sql/reporting-services/tools/sample-reporting-services-rs-exe-script-to-copy-content-between-report-servers?view=sql-server-2017

Para executar na linha de comando, com o arquivo .rss baixado do github, segue um exemplo de sintaxe. Estou reproduzindo aqui apenas para facilitar, mas tem outros na pagína do link acima:
rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https:///ReportServer -u Domain\User -p password -v ts="https:///reportserver" -v tu="Domínio\ContaUsuário" -v tp="" -v security="True"

A conta usada deve ter o mínimo de permissões para acessar o endpoint ReportServer de cada servidor. Normalmente é uma conta de administração de servidor ou com tais permissões.

Exemplo de um comando usado recentemente aqui na empresa (informações de segurança foram retiradas):
rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://servername_origem/reportserver -u dominio\usuario -p <senha> -v ts="http://servername_destino/reportserver" -v tu="dominio\usuario" -v tp="<senha>" -v security="True"

Você verá a mensagem: You can cancel the script after step 1 if you do not want to start the actual migration. Significa que o RS executa 2 fases: a primeira é um levantamento, e pode ser cancelada logo que concluída. Tudo que o RS conseguir acessar será listado. Se estiver satisfeito com o que foi listado, pressione ENTER para executar a segunda fase, a da transferência.


Verifique se tudo foi migrado de acordo.

Atualize os Data Sources se necessário, pois eles apontam para o mesmo lugar de antes, então se você migrou não só o Report Service, mas também o Database Server, terá que atualizar.

A parte de segurançao poder ser a mais difícil de migra (-v security="True"), então sempre confira se os usuários terão acesso ou se será necessário conceder novamente as permissões. Eu prefiro usar Autenticação integrada nos reports para evitar estas configs.