Eu tenho um banco de dados de teste com o qual estou tendo problemas de permissão.
Não consigo acessar o banco de dados de relatórios e a documentação de ajuda do aplicativo diz para fazer o seguinte:
Resolution:
1. Launch the SQL Server Management Studio and connect to the database server(s) hosting the Vision and Reporting Server databases.
2. Expand the security folder.
3. Select logins and right click on the <username> user and choose properties.
4. Click the User Mapping tab
5.Make sure the following databases are selected in the Users mapped to this Login:
ReportServer
ReportServerTempDB
Your Vision databases
This maps the login/user to the respective databases.
6. As you select each database (including your Vision database), select the db_owner role in the Database role membership for: section. You must select this option for each database.
Quando faço isso, recebo o seguinte erro:
"Create failed for user '<servername>\<username>'. User, group, or role '<servername>\<username>' already exists in the current database. (Microsoft SQL Server, Error: 15023)"
Eu pesquisei esse erro e tentei o seguinte comando em cada banco de dados:
ALTER USER [<username>] WITH LOGIN = [<username>]
A mensagem indicou que os comandos foram concluídos com êxito, mas ainda estou recebendo o erro acima quando tento mapear cada banco de dados conforme as instruções acima.
o que estou perdendo?
Por comentário de Kin (obrigado) eu tentei isso: - Cliquei com o botão direito do mouse no usuário e selecionei: Script Login As > Drop and Create To > New query window. - Executei a consulta resultante e tentei mapear as funções de usuário selecionando os outros dois bancos de dados e db_owner novamente, mas ainda estou recebendo a mesma mensagem de erro acima.
Pensamentos??
Há várias coisas que você pode tentar, e o sucesso de cada uma provavelmente dependerá de qual função de servidor você possui.
Para começar, se for apenas um ou dois usuários, honestamente, a maneira mais fácil é descartar o usuário do banco de dados do banco de dados restaurado e, desde que já exista um login de servidor existente, remapear o usuário do banco de dados para o login do servidor usando o SSMS. Se o login do servidor não existir, basta criá-lo, mapear o usuário e pronto! Lá vamos nós.
Próxima opção: se você estiver migrando um grande número de usuários, use sp_help_revlogin. sp_help_revlogin é um procedimento armazenado fornecido pela Microsoft que ajudará a migrar logons de um servidor para outro, incluindo senhas e SIDs. Aqui está um bom artigo sobre isso SP_HELP_REVLOGIN
Eu uso Auto_Fix no
sp_change_users_login
meu ambiente de desenvolvimento para corrigir esses problemas (Erro 15023). Evite usar Auto_Fix em situações de segurança.Além disso, observe que esse recurso pode ser removido em uma versão futura do Microsoft SQL Server.
Outras referências:
É a abordagem certa.
Caso contrário, acesse:
Segurança > Logins > (seu nome de usuário) > Propriedades > Mapeamento de usuários
e remapear esse usuário para o banco de dados desejado.
Você pode usar a seguinte consulta no contexto de seu banco de dados para verificar se há órfãos:
vá para o banco de dados mestre e exclua o usuário