Erro de mapeamento do utilizador do servidor SQL 15023

eu tento mapear o meu outro DB para um utilizador, indo para
Segurança > Logins > carregue com o botão direito do rato para o utilizador > propriedades > mapeamento do utilizador > seleccione DB > configurado como DB_ proprietário e depois ok, mas continuo a obter um erro a dizer

O Utilizador, o grupo ou a função 'somewuser' já existe na base de dados actual. (Microsoft SQL Server, Error: 15023)

o que está a causar o erro, e como é que mapeio esse utilizador para a base de dados?

Author: JC Borlagdan, 2016-10-26

4 answers

Para corrigir o mapeamento do utilizador e do utilizador, é necessário abrir uma janela de pesquisa no Estúdio de gestão do servidor SQL. Indique as duas linhas seguintes e substitua o myDB pelo nome da base de dados e o myUser pelo nome de Utilizador correcto:

USE myDB

EXEC sp_change_users_login 'Auto_Fix', 'myUser'

Se correr com sucesso deverá obter um resultado como este:

The row for user '****' will be fixed by updating its login link to a login already in existence.

The number of orphaned users fixed by updating users was 1.

The number of orphaned users fixed by adding new logins and then updating users was 0.**

O seu utilizador deve agora ser mapeado correctamente.

Editar:

Nova forma de resolver/corrigir um utilizador órfão:

Na base de dados principal, usar a instrução criar autenticação com a opção SID para recriar uma autenticação em falta, fornecendo o SID do Utilizador da base de dados.

CREATE LOGIN <login_name>   
WITH PASSWORD = '<use_a_strong_password_here>',  
SID = <SID>;  

Para mapear um utilizador órfão para um utilizador que já exista no master, execute a instrução alterar o utilizador na base de dados do utilizador, indicando o nome do utilizador.

ALTER USER <user_name> WITH Login = <login_name>;  

Quando você recriar um login em falta, o usuário pode acessar a base de dados usando a senha fornecida. Em seguida, o usuário pode alterar a senha da conta de login, usando a alteração de LOGIN instrucao.

ALTER LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';  
 21
Author: CR241, 2018-02-18 03:21:34

Se atribuir as permissões a um Utilizador da base de dados sem as mapear primeiro para a base de dados, ele irá lançar o erro que mencionou.

Você deve ser capaz de apagar o usuário, mapeá-lo para a base de dados e, em seguida, atribuir o Usuário para o papel DB_ proprietário.

 3
Author: knockout, 2016-10-26 07:56:19

Se for apenas um ou dois utilizadores, então a maneira mais fácil é largar o Utilizador da base de dados da base restaurada, remapear o Utilizador da base de dados para o utilizador do servidor usando o SSMS. Se o login do servidor não existir então basta criá-lo, mapear o usuário.

Opção 2: Se estiver a migrar um grande número de utilizadores, use o sp_help_revlogin. sp_help_revlogin é um procedimento de armazenamento fornecido pela Microsoft que irá ajudar a migrar logins de um servidor para outro, incluindo senhas e SIDs. Aqui está um bom artigo sobre isso SP_HELP_REVLOGIN: http://www.databasejournal.com/features/mssql/article.php/2228611/Migrating-Logins-from-One-SQL-Server-to-Another.htm

Correcções de código para ajudar a usá-lo : executar a pesquisa T-SQL no Analisador de pesquisas. Isto irá devolver todos os usuários existentes no banco de dados em resultado pan.

USE YourDB
GO
EXEC sp_change_users_login 'Report'
GO

Executar a seguir à pesquisa T-SQL no Analisador de consultas para associar a autenticação com o utilizador. O atributo 'Auto_Fix' criará o utilizador na instância do servidor SQL se não existir. No exemplo seguinte 'ColdFusion' é o nome de usuário, ' cf ' é Senha. A auto-correcção Liga um item do utilizador na tabela sysusers da base de dados actual a um utilizador com o mesmo nome em sysxlogins.

USE YourDB
GO
EXEC sp_change_users_login 'Auto_Fix', 'ColdFusion', NULL, 'cf'
GO

Executar a seguir à pesquisa T-SQL no Analisador de consultas para associar a autenticação com o utilizador. O 'Update_One' liga o utilizador indicado na base de dados actual à autenticação. o login já deve existir. o Usuário e o login devem ser especificados. a senha deve ser nula ou não especificada

USE YourDB
GO
EXEC sp_change_users_login 'update_one', 'ColdFusion', 'ColdFusion'
GO

2) Se conta de autenticação tem permissão para largar outros usuários, executar seguindo T-SQL no Analisador de consultas. Isto vai deixar cair o utilizador.

USE YourDB
GO
EXEC sp_dropuser 'ColdFusion'
GO

Crie o mesmo Utilizador novamente na base de dados sem qualquer erro.

 2
Author: NG., 2016-10-26 09:13:35

Primeiro largue o seu utilizador, depois execute o programa abaixo:

USE [YOURDB]
GO
CREATE USER [USERNAME] FOR LOGIN [USERNAME]
GO
USE [YOURDB]
GO
ALTER USER [USERNAME] WITH DEFAULT_SCHEMA=[dbo]
GO
 0
Author: Yusuf Ünlü, 2018-09-16 12:27:26