Tenho vários servidores e 4 deles têm serviços de relatórios instalados com os bancos de dados ReportServer
& ReportServerTempDB
.
Alguns dias atrás eu estava configurando a segurança para um novo login e descobri que a RSExecRole
função está faltando no meu servidor dev (no banco de reportserver
dados). Ele existe nos bancos de dados ReportServerTempDB
, master
& msdb
.
Eu encontrei uma maneira de criá-lo nos master
& msdb
bancos de dados no msdn
, mas não me ajudou a criá-lo reportserver
com todos os securibles e propriedades semelhantes aos outros ambientes que eu executo.
Alguém já encontrou esse problema antes? Alguém pode me ajudar com um roteiro e uma explicação sobre esse papel?
Abra "Reporting Services Configuration Manager" --> Banco de dados, verifique se o login em [Current Report Server Database Credential] é um dos usuários no RSExecRole ou não, caso contrário, clique no botão "Change Credentials" para mudar para um usuário no RSExecRole.
Você também pode usar o utilitário de linha de comando rsconfig http://technet.microsoft.com/en-us/library/ms162837.aspx
Já que você também queria o código, eu criei um script para você...
Edit: Eu editei, então abaixo fica o código completo.
Claro! Execute o SQL Profiler, crie um novo banco de dados ReportServer usando o 'Reporting Services Configuration Manager' (você pode especificar seu próprio nome para evitar colisões) e capture todas as instruções. O script final depende da versão e edição do sql, portanto não é genérico e não deve ser reutilizado. É bom para educação (por exemplo, dependências RSExecRole) e nada mais.
Já vi tentativas de script de todos os objetos ReportServer. Pode parecer bom, mas é uma má ideia - muito fácil perder algo importante (RSExecRole). Bancos de dados de terceiros (Reporting Services, ASPState, etc.) devem ser criados e configurados com ferramentas dedicadas. Outra explicação - alguém abandonou explicitamente esse papel.