다음을 통해 공유


분리된 사용자 문제 해결(SQL Server)

Microsoft SQL Server instance 로그인하려면 보안 주체에 유효한 SQL Server 로그인이 있어야 합니다. 이 로그인은 보안 주체가 SQL Server instance 연결할 수 있는지 여부를 확인하는 인증 프로세스에 사용됩니다. 서버 instance SQL Server 로그인은 sys.server_principals 카탈로그 뷰 및 sys.syslogins 호환성 보기에 표시됩니다.

SQL Server 로그인은 SQL Server 로그인에 매핑된 데이터베이스 사용자를 사용하여 개별 데이터베이스에 액세스합니다. 이 규칙에는 두 가지 예외가 있습니다.

  • 게스트 계정

    데이터베이스에서 사용하도록 설정하면 데이터베이스 사용자에 매핑되지 않은 SQL Server 로그인이 게스트 사용자로 데이터베이스를 입력할 수 있도록 하는 계정입니다.

  • Microsoft Windows 그룹 멤버 자격

    Windows 사용자로부터 생성된 SQL Server 로그인은 해당 Windows 사용자가 Windows 그룹의 멤버인 동시에 데이터베이스의 사용자인 경우 데이터베이스에 액세스할 수 있습니다.

데이터베이스 사용자로의 SQL Server 로그인 매핑에 대한 정보는 데이터베이스 내에 저장됩니다. 데이터베이스 사용자 이름과 해당 SQL Server 로그인의 SID가 여기에 포함됩니다. 이 데이터베이스 사용자의 사용 권한은 데이터베이스에서 권한 부여에 사용됩니다.

해당 SQL Server 로그인이 정의되지 않거나 서버에서 잘못 정의된 데이터베이스 사용자 instance instance 로그인할 수 없습니다. 이러한 사용자는 해당 서버 인스턴스에 있는 데이터베이스의 분리된 사용자 라고 합니다. 해당 SQL Server 로그인이 삭제되면 데이터베이스 사용자가 분리될 수 있습니다. 또한 데이터베이스를 복원하거나 다른 instance SQL Server 연결한 후에 데이터베이스 사용자가 분리될 수 있습니다. 데이터베이스 사용자가 새 서버 인스턴스에 없는 SID로 매핑되는 경우 사용자가 분리될 수 있습니다.

참고

SQL Server 로그인은 해당 데이터베이스에서 게스트를 사용하도록 설정하지 않는 한 해당 데이터베이스 사용자가 없는 데이터베이스에 액세스할 수 없습니다. 데이터베이스 사용자 계정을 만드는 방법에 대한 자세한 내용은 CREATE USER(Transact-SQL)를 참조하세요.

분리된 사용자를 검색하려면

분리된 사용자를 검색하려면 다음 Transact-SQL 문을 실행합니다.

USE <database_name>;  
GO;   
sp_change_users_login @Action='Report';  
GO;  

출력에는 SQL Server 로그인에 연결되지 않은 현재 데이터베이스의 사용자 및 해당 SID(보안 식별자)가 나열됩니다. 자세한 내용은 sp_change_users_login(Transact-SQL)를 참조하세요.

참고

sp_change_users_login Windows에서 만든 SQL Server 로그인과 함께 사용할 수 없습니다.

분리된 사용자를 확인하려면

분리된 사용자를 확인하려면 다음 절차를 수행합니다.

  1. 다음 명령은 login_name 지정된 <서버 로그인 계정을 database_user> 지정한 <>데이터베이스 사용자와 다시 연결합니다.

    USE <database_name>;  
    GO  
    sp_change_users_login @Action='update_one', @UserNamePattern='<database_user>', @LoginName='<login_name>';  
    GO  
    
    

    자세한 내용은 sp_change_users_login(Transact-SQL)를 참조하세요.

  2. 앞 단계에서 코드를 실행한 다음 사용자는 데이터베이스에 액세스할 수 있습니다. 그러면 사용자는 다음과 같이 sp_password> 저장 프로시저를 사용하여 login_name 로그인 계정의< 암호를 변경할 수 있습니다.

    USE master   
    GO  
    sp_password @old=NULL, @new='password', @loginame='<login_name>';  
    GO  
    

    중요

    ALTER ANY LOGIN 사용 권한이 있는 로그인으로만 다른 사용자의 로그인 암호를 변경할 수 있습니다. 그러나 sysadmin 역할의 멤버만 sysadmin 역할 멤버의 암호를 수정할 수 있습니다.

    참고

    sp_password Microsoft Windows 계정에 사용할 수 없습니다. Windows 네트워크 계정을 통해 SQL Server instance 연결하는 사용자는 Windows에서 인증되므로 해당 암호는 Windows에서만 변경할 수 있습니다.

    자세한 내용은 sp_password(Transact-SQL)를 참조하세요.

참고 항목

CREATE USER(Transact-SQL)
CREATE LOGIN(Transact-SQL)
sp_change_users_login(Transact-SQL)
sp_addlogin(Transact-SQL)
sp_grantlogin(Transact-SQL)
sp_password(Transact-SQL)
sys.sysusers(Transact-SQL)
sys.syslogins(Transact-SQL)