로그인에 이미 다른 사용자 이름으로 계정이 있습니다


29

이 SQL을 실행할 때 :

USE ASPState
GO
IF NOT EXISTS(SELECT * FROM sys.sysusers WHERE NAME = 'R2Server\AAOUser')
CREATE USER [R2Server\AAOUser] FOR LOGIN [R2Server\AAOUser];
GO

다음과 같은 오류가 발생합니다.

로그인에 이미 다른 사용자 이름으로 된 계정이 있습니다.

로그인 계정에 대한 이 다른 사용자 이름 이 무엇인지 어떻게 알 수 있습니까?

답변:


31

이는 로그인 [R2Server \ AAOUser]가 해당 데이터베이스의 사용자에게 이미 매핑되어 있음을 의미합니다. 즉, 다른 데이터베이스 사용자가이 로그인을 사용하고 있습니다. 다음 쿼리로 로그인을 사용하는 데이터베이스 사용자를 확인할 수 있습니다.

use YourDB
go
SELECT su.name as DatabaseUser
FROM sys.sysusers su
join sys.syslogins sl on sl.sid = su.sid
where sl.name = 'test' -- login

PS : 호환성보기를 사용하지 않는 스크립트 버전 :

Select sp.name as LoginName, sp.type_desc as LoginType,
    dp.name as DBUser, dp.type_desc as UserType
from sys.server_principals sp
join sys.database_principals dp on dp.sid = sp.sid
where sp.name = 'test' -- your login

좋아, 나는 값 dbo이 표시되는 것을 본다 . 이상 dbo합니다 R2Server\AAOUser. 계정에를 사용했다는 것을 기억하지 않습니다 . 다음에해야 할 일이 궁금합니다.
Jack

4
서버에 연결하기 위해 해당 로그인을 사용하여 데이터베이스를 작성 했습니까? 그렇다면 DB 소유자이며 다른 사용자를 만들 필요가 없습니다. 이미 설정되었습니다.
Marian

실제로이 명령 aspnet_regsql -E -S .\MSSQLSERVER_R2 -ssadd을 사용하여 ASPState데이터베이스 를 만들었습니다 . 아마 나는 이미 설정되어 있다고 생각하지만, 나는 그것을 처음부터 깨닫지 못합니다.
Jack

"-E-> 현재 Windows 자격 증명으로 인증하십시오." :-)
마리안

4
내가 사용하는 것이 sys.server_principalssys.database_principals. sysuserssyslogins이전 버전과의 호환성을 위해 단지가있다.
Aaron Bertrand

4

그것은 '메타 데이터 것'입니다 ...

때때로 데이터베이스 사용자는 해당 DB에서 진행되는 모든 과정에서 '손상'됩니다. (DB가 복원되고 복원 된 사본의 역할이 중첩 된 것과 다른 동작을 보았습니다.이 때문에 아래에서 시도한 결과 문제가 해결되었습니다.)

  1. SSMS-> (보안 | 로그인 | 실패 사용자 ID | 속성 | 사용자 매핑) 에서 로그인 속성을 엽니 다 . DB가 이미 확인되었고 역할이 할당되어있는 것을 볼 수 있습니다 (완전히 정상과 같습니다).

  2. 참고 용으로 오류를 제공하는 DB에 대한 권한을 참고하십시오.

  3. 해당 DB를 선택 취소하고 로그인을 저장하십시오.
  4. 이제 쿼리를 다시 실행하여 로그인 / 역할을 대상 DB에 추가하십시오. 잘 작동합니다.

2
3 단계에 도달하면 다음과 같은 결과를 얻습니다.Cannot drop the user 'dbo'. (Microsoft SQL Server, Error: 15150)
bkwdesign

또한 Cannot drop the user 'dbo'.오류 메시지가 나타납니다. 이 스크립트를 실행하여 문제가있는 사용자 매핑을 제거하고 문제를 해결했습니다 USE DATABASE_NAME; ALTER AUTHORIZATION ON DATABASE::DATABASE_NAME TO [sa]. 자세한 내용은이 사이트를 사용한 소스입니다. blog.sql-assistance.com/index.php/cannot-drop-the-user-dbo
SherlockSpreadsheets
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.