Criar o RSExecRole

O Reporting Services usa uma função de banco de dados predefinida chamada RSExecRole para conceder permissões de servidor de relatório ao banco de dados de servidor de relatório. A função RSExecRole é criada automaticamente com o banco de dados de servidor de relatório. Como regra geral, você nunca deve modificá-la ou atribuir outros usuários à função. No entanto, quando você move um banco de dados de servidor de relatório para um Mecanismo de Banco de Dados do SQL Server novo ou diferente, deve recriar a função nos bancos de dados Mestre e MSDB do sistema.

Use as instruções a seguir para executará estas etapas:

  • Crie e provisione o RSExecRole no banco de dados Mestre do sistema.

  • Crie e provisione o RSExecRole no banco de dados MSDB do sistema.

Observação

As instruções deste tópico são voltadas para os usuários que não desejam executar um script ou gravar um código WMI para provisionar o banco de dados de servidor de relatório. Se você gerenciar uma grande implantação e mover bancos de dados periodicamente, grave um script para automatizar estas etapas. Para obter mais informações, consulte Acessar o provedor WMI do Reporting Services.

Antes de começar

  • Faça backup das chaves de criptografia de forma que você possa restaurá-las depois que o banco de dados for movido. Essa etapa não afeta diretamente a possibilidade de criar e provisionar o RSExecRole, mas é necessário ter um backup das chaves para verificar seu trabalho. Para saber mais, confira Back Up and Restore Reporting Services Encryption Keys.

  • Verifique se você está conectado com uma conta de usuário que tem permissões sysadmin na instância do SQL Server.

  • Verifique se o serviço do SQL Server Agent está instalado e em execução na instância do Mecanismo de Banco de Dados que pretende usar.

  • Anexe os bancos de dados ReportServerTempDB e ReportServer. Não é necessário conectar os bancos de dados para criar a função real, mas eles devem ser conectados antes de você testar seu trabalho.

As instruções para a criação manual do RSExecRole devem ser usadas no contexto de migração da instalação de um servidor de relatório. Tarefas importantes como o backup e a movimentação do banco de dados de servidor de relatórios não são descritas neste artigo, mas estão disponíveis na documentação do Mecanismo do Banco de Dados.

Criar o RSExecRole no mestre

O Reporting Services usa procedimentos armazenados estendidos para que o serviço do SQL Server Agent dê suporte a operações agendadas. As etapas a seguir explicam como conceder permissões Executar para os procedimentos da função RSExecRole .

Criar o RSExecRole no banco de dados mestre do sistema usando o Management Studio

  1. Inicie o SQL Server Management Studio e conecte-se à instância do Mecanismo de Banco de Dados que hospeda o banco de dados do servidor de relatório.

  2. Abra Bancos de Dados.

  3. Abra Bancos de Dados do Sistema.

  4. Abra Mestre.

  5. Abra Segurança.

  6. Abra Funções.

  7. Clique com o botão direito do mouse em Funções de Banco de Dadose selecione Nova Função de Banco de Dados. A página Função de Banco de Dados – Novo é exibida.

  8. Em Nome da função, insira RSExecRole.

  9. Em Proprietário, insira dbo.

  10. Selecione a página Protegíveis.

  11. Selecione Pesquisar. A caixa de diálogo Adicionar Objetos é exibida. A opção Objetos Específicos é selecionada por padrão.

  12. Selecione OK. A caixa de diálogo Selecionar Objetos é exibida.

  13. Selecione Tipos de objeto.

  14. Selecione Procedimentos armazenados estendidos.

  15. Selecione OK.

  16. Selecione Procurar.

  17. Role a lista para baixo e selecione os procedimentos a seguir:

    1. xp_sqlagent_enum_jobs

    2. xp_sqlagent_is_starting

    3. xp_sqlagent_notify

  18. Selecione OK e depois OK novamente.

  19. Na linha Executar, na coluna Conceder, selecione a caixa de seleção.

  20. Repita essas etapas para cada um dos procedimentos armazenados restantes. ORSExecRole deve receber permissões Executar para todos os três procedimentos armazenados.

  21. Escolha OK para concluir.

Captura de tela mostrando a página de propriedades da função de banco de dados.

Criar o RSExecRole no MSDB

O Reporting Services usa procedimentos armazenados para o serviço do SQL Server Agent e recupera informações de trabalho das tabelas do sistema para suportar as operações agendadas. As etapas a seguir explicam como conceder permissões Executar para os procedimentos e as permissões Selecionar nas tabelas para o RSExecRole.

Criar o RSExecRole no banco de dados do sistema do MSDB

  1. Repita etapas semelhantes para conceder permissões a procedimentos armazenados e tabelas no MSDB. Para simplificar as etapas, você provisiona os procedimentos armazenados e as tabelas separadamente.

  2. Abra MSDB.

  3. Abra Segurança.

  4. Abra Funções.

  5. Clique com o botão direito do mouse em Funções de Banco de Dadose selecione Nova Função de Banco de Dados. A página Geral é exibida.

  6. Em Nome da função, insira RSExecRole.

  7. Em Proprietário, insira dbo.

  8. Selecione a página Protegíveis.

  9. Selecione Pesquisar. A caixa de diálogo Adicionar Objetos é exibida. A opção Especificar Objetos é selecionada por padrão.

  10. Selecione OK.

  11. Selecione Tipos de objeto.

  12. Selecione Procedimento Armazenado.

  13. Selecione OK.

  14. Selecione Procurar.

  15. Role a lista de itens para baixo e selecione os procedimentos armazenados a seguir:

    1. sp_add_category

    2. sp_add_job

    3. sp_add_jobschedule

    4. sp_add_jobserver

    5. sp_add_jobstep

    6. sp_delete_job

    7. sp_help_category

    8. sp_help_job

    9. sp_help_jobschedule

    10. sp_verify_job_identifiers

  16. Selecione OK e depois escolha OK novamente.

  17. Selecione o primeiro procedimento armazenado: sp_add_category.

  18. Na linha Executar, na coluna Conceder, selecione a caixa de seleção.

  19. Repita essas etapas para cada um dos procedimentos armazenados restantes. O RSExecRole deve obter permissões Executar para os 10 procedimentos armazenados.

  20. Ainda na página Protegíveis, selecione Pesquisar novamente. A caixa de diálogo Adicionar Objetos é exibida. A opção Especificar Objetos é selecionada por padrão.

  21. Selecione OK.

  22. Selecione Tipos de objeto.

  23. Selecione Tabelas.

  24. Selecione OK.

  25. Selecione Procurar.

  26. Role a lista de itens para baixo e selecione as tabelas a seguir:

    1. syscategories

    2. sysjobs

  27. Selecione OK e depois OK novamente.

  28. Selecione a primeira tabela: syscategories.

  29. Na linha Selecionar, na coluna Conceder, selecione a caixa de seleção.

  30. Repita para a tabela sysjobs. O RSExecRole deve obter permissões Selecionar para as duas tabelas.

  31. Escolha OK para concluir.

Mover o banco de dados do servidor de relatório

Depois de criar as funções, você pode mover o banco de dados de servidor de relatório para a nova instância do SQL Server. Para obter mais informações, consulte Mover os bancos de dados do servidor de relatório para outro computador.

Se estiver fazendo upgrade do mecanismo de banco de dados para o SQL Server 2016 ou posterior, atualize antes ou depois de mover o banco de dados.

O banco de dados do servidor de relatório é atualizado automaticamente quando o servidor de relatório se conectar a ele. Não há nenhuma etapa específica necessária para atualizar o banco de dados.

Restaurar as chaves de criptografia e verificar seu trabalho

Se você anexou os bancos de dados de servidor de relatório, execute estas etapas para verificar seu trabalho.

Verificar a operabilidade do servidor de relatório depois de um movimento de banco de dados

  1. Inicie a ferramenta Configuração do Reporting Services e conecte-se ao servidor de relatório.

  2. Selecione Banco de Dados.

  3. Selecione Alterar Banco de Dados.

  4. Selecione Escolher um banco de dados existente do servidor de relatório.

  5. Insira o nome do servidor do Mecanismo de Banco de Dados. Se você anexou os bancos de dados do servidor de relatório a uma instância nomeada, insira o nome da instância neste formato: <servername>\<instancename>.

  6. Selecione Testar Conexão. Você deve ver uma caixa de diálogo que diz "Teste de conexão bem-sucedido".

  7. Clique em Ok para fechar a caixa de diálogo e selecione Avançar.

  8. Em Banco de Dados, selecione o banco de dados de servidor de relatório.

  9. Selecione Avançar e conclua o assistente.

  10. Selecione Chaves de criptografia.

  11. Selecione Restaurar.

  12. Selecione o arquivo forte (.snk) que tem a cópia de backup da chave simétrica usada para descriptografar as credenciais armazenadas e as informações de conexão no banco de dados de servidor de relatório.

  13. Insira a senha e selecione OK.

  14. Selecione URL do Portal da Web.

  15. Selecione o link para abrir o portal da Web. Você deve ver os itens de servidor de relatório do banco de dados de servidor de relatório.

Criar as permissões e a função RSExecRole usando o T-SQL

A função também pode ser criada, e as permissões aplicáveis concedidas, nos bancos de dados do sistema usando o script T-SQL a seguir:

USE master;
GO
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [type] = 'R' AND [name] = 'RSExecRole') BEGIN
    CREATE ROLE [RSExecRole];
END
GRANT EXECUTE ON dbo.xp_sqlagent_enum_jobs TO [RSExecRole];
GRANT EXECUTE ON dbo.xp_sqlagent_is_starting TO [RSExecRole];
GRANT EXECUTE ON dbo.xp_sqlagent_notify TO [RSExecRole];
GO
USE msdb;
GO
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [type] = 'R' AND [name] = 'RSExecRole') BEGIN
    CREATE ROLE [RSExecRole];
END
GRANT EXECUTE ON dbo.sp_add_category TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobschedule TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobserver TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobstep TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_delete_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_category TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_jobschedule TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_verify_job_identifiers TO [RSExecRole];
GRANT SELECT ON dbo.syscategories TO [RSExecRole];
GRANT SELECT ON dbo.sysjobs TO [RSExecRole];
GO