>source

SQL 서버->보안->'testuser'로 로그인 한 사용자가 있습니다. 데이터베이스, TestDB를 만들고 TestDB에 'testuser'라는 이름으로 사용자를 만들려고 시도했지만 다음 오류가 발생합니다.

 Msg 15063, Level 16, State 1, Line 11
  The login already has an account under a different user name.
  Msg 15410, Level 11, State 1, Procedure sys.sp_addrolemember, Line 35 [Batch Start Line 0]
  User or role 'testuser' does not exist in this database.
 This is the create script i use:
 
 USE [TestDB] 
 If not Exists(select loginname from master.dbo.syslogins where name = 'testuser')  
 Begin CREATE LOGIN[testuser] WITH PASSWORD='testpassword', 
    DEFAULT_DATABASE=TestDB, 
    DEFAULT_LANGUAGE=[us_english], 
    CHECK_EXPIRATION=OFF,  
    CHECK_POLICY=OFF  
 End 
USE TestDB; 
 If not exists(Select* from sys.database_principals where name = 'testuser') 
 begin 
   CREATE USER[testuser] FOR LOGIN[testuser] WITH DEFAULT_SCHEMA=[dbo] end EXEC sys.sp_addrolemember 
 @rolename = N'db_owner',
 @membername = N'testuser'

데이터베이스 수준에서이 사용자를 만들 수 있어야한다고 가정합니다.

  • 답변 # 1

    오류 메시지는 분명합니다. 동일한 로그인 이름에 연결된 TestDB 데이터베이스에 이미 사용자 이름 (무엇이든 가능)이 있으므로 한 번의 로그인으로 여러 사용자를 만들 수 없습니다.

    해당 사용자 이름이 무엇인지 확인하려면 아래 쿼리를 사용할 수 있습니다.

    USE TestDB
    Select u.name , loginname
    from sys.syslogins l
    inner join sys.sysusers u
    on l.sid = u.sid
    where loginname = 'testuser'
    
    

관련 자료

  • 이전 mongodb 하위 배열을 쿼리하고 날짜 범위에 맞는 하위 배열의 최신 항목 만 반환
  • 다음 python - 지정된 시간의 주가 시작 및 종료 범위