Erro 15023: O usuário já existe no banco de dados atual.

SQLSERVER2008

Erro 15023 SQL Server: Usuários reclamam que não conseguem acesso a base de dados, quando você verifica o usuário na base ela não esta “conectada” ao loguin, ao executar o auto-fix ele não interliga o usuário ao loguin e ainda aparece o erro, então faça os passos a seguir:

1) Esta é a melhor solução.
Primeiro de todos os executados seguindo T-SQL consulta no Query Analyzer.

Isso irá retornar todos os usuários existentes no banco de dados pan resultado.

USE YourDB (O seu Banco de Dados)
GO
EXEC sp_change_users_login 'Report'
GO 

Executar seguindo T-SQL consulta no Query Analyzer para associar login com o nome de usuário.

Atributo ‘Auto_Fix’ irá criar o usuário na instância do SQL Server se ele não existe.

Em seguida o exemplo “ColdFusion” é UserName, ‘cf’ é senha.

Auto-Fix ligações de uma entrada de usuário na tabela sysusers no banco de dados atual para um login com o mesmo nome em sysxlogins.

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

Executar seguindo T-SQL consulta no Query Analyzer para associar login com o nome de usuário.

‘Update_One’ liga o usuário especificado no banco de dados atual para o login.

login já deve existir.

usuário e logon deve ser especificado. password must be NULL or not specified senha deve ser NULL ou não especificados

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

2) Se a conta de login tem permissão para deixar outros usuários, executar o seguinte T-SQL no Query Analyzer. Isso vai cair o usuário.

USE YourDB
GO
EXEC sp_dropuser 'ColdFusion'
GO 

Criar o mesmo utilizador de novo na base de dados sem qualquer erro.

Stored Procedure 1: Stored Procedure 1:
/*Following Stored Procedure will fix all the Orphan users in database
by mapping them to username already exist for user on server.
This SP is required when user has been created at server level but does
not show up as user in database.*/
CREATE PROCEDURE dbo.spDBA_FixOrphanUsers
AS
DECLARE @username VARCHAR ( 25 )
DECLARE GetOrphanUsers CURSOR
FOR
SELECT UserName = name
FROM sysusers
WHERE issqluser = 1
AND ( sid IS NOT NULL
AND sid <> 0x0 )
AND SUSER_SNAME ( sid ) IS NULL
ORDER BY name
OPEN GetOrphanUsers
FETCH NEXT
FROM GetOrphanUsers
INTO @username
WHILE @@FETCH_STATUS = 0
BEGIN
IF @username = 'dbo'
EXEC sp_changedbowner 'sa'
ELSE
EXEC sp_change_users_login 'update_one' , @username , @username
FETCH NEXT
FROM GetOrphanUsers
INTO @username
END
CLOSE GetOrphanUsers
DEALLOCATE GetOrphanUsers
GO

Stored Procedure 2: Stored Procedure 2:
/*Following Stored Procedure will fix all the Orphan users in database
by creating the server level user selecting same password as username.
Make sure that you change all the password once users are created*/
CREATE PROCEDURE dbo.spDBA_FixOrphanUsersPassWord
AS
DECLARE @username VARCHAR ( 25 )
DECLARE @password VARCHAR ( 25 )
DECLARE GetOrphanUsers CURSOR
FOR
SELECT UserName = name
FROM sysusers
WHERE issqluser = 1
AND ( sid IS NOT NULL
AND sid <> 0x0 )
AND SUSER_SNAME ( sid ) IS NULL
ORDER BY name
OPEN GetOrphanUsers
FETCH NEXT
FROM GetOrphanUsers
INTO @username
SET @password = @username
WHILE @@FETCH_STATUS = 0
BEGIN
IF @username = 'dbo'
EXEC sp_changedbowner 'sa'
ELSE
EXEC sp_change_users_login 'Auto_Fix' , @username , NULL, @password
FETCH NEXT
FROM GetOrphanUsers
INTO @username
END
CLOSE GetOrphanUsers
DEALLOCATE GetOrphanUsers
GO

Stored Procedure 3: Stored Procedure 3:
----Following Stored Procedure will drop all the Orphan users in database.
----If you need any of those users, you can create them again.
CREATE PROCEDURE dbo.spDBA_DropOrphanUsers
AS
DECLARE @username VARCHAR ( 25 )
DECLARE GetOrphanUsers CURSOR
FOR
SELECT UserName = name
FROM sysusers
WHERE issqluser = 1
AND ( sid IS NOT NULL
AND sid <> 0x0 )
AND SUSER_SNAME ( sid ) IS NULL
ORDER BY name
OPEN GetOrphanUsers
FETCH NEXT
FROM GetOrphanUsers
INTO @username
WHILE @@FETCH_STATUS = 0
BEGIN
IF @username = 'dbo'
EXEC sp_changedbowner 'sa'
ELSE
EXEC sp_dropuser @username
FETCH NEXT
FROM GetOrphanUsers
INTO @username
END
CLOSE GetOrphanUsers
DEALLOCATE GetOrphanUsers
GO

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s