분리된 사용자 문제 해결
Microsoft SQL Server 인스턴스에 로그인하려면 유효한 SQL Server 로그인이 사용자에게 있어야 합니다. 이 로그인은 SQL Server 인스턴스에 대한 사용자 연결이 허용되는지 여부를 확인하는 인증 프로세스에서 사용됩니다. 서버 인스턴스의 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 로그인이 서버 인스턴스에서 정의되지 않았거나 잘못 정의되어 있는 데이터베이스 사용자는 이 인스턴스에 로그인할 수 없습니다. 이러한 사용자는 해당 서버 인스턴스에 있는 데이터베이스의 분리된 사용자라고 합니다. 데이터베이스 사용자는 해당 SQL Server 로그인이 삭제되면 분리될 수 있습니다. 데이터베이스가 SQL Server의 다른 인스턴스에 복원되거나 연결된 후에도 데이터베이스 사용자가 분리될 수 있습니다. 데이터베이스 사용자가 새 서버 인스턴스에 없는 SID로 매핑되는 경우 사용자가 분리될 수 있습니다.
[!참고]
데이터베이스에서 guest를 설정하지 않은 경우 SQL Server 로그인은 해당 데이터베이스 사용자가 없는 데이터베이스에 액세스할 수 없습니다. 데이터베이스 사용자 계정을 만드는 방법은 CREATE USER(Transact-SQL)를 참조하십시오.
분리된 사용자를 검색하려면
분리된 사용자를 검색하려면 다음 Transact-SQL 문을 실행합니다.
USE <database_name>;
GO;
sp_change_users_login @Action='Report';
GO;
현재 데이터베이스에 있으며 어떤 SQL Server 로그인에도 연결되지 않은 사용자와 이에 해당되는 SID(보안 ID)가 나열됩니다. 자세한 내용은 sp_change_users_login(Transact-SQL)을 참조하십시오.
[!참고]
sp_change_users_login은 Windows로부터 생성된 SQL Server 로그인에 사용할 수 없습니다.
분리된 사용자를 확인하려면
분리된 사용자를 확인하려면 다음 절차를 수행합니다.
다음 명령은 <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)을 참조하십시오.
앞 단계에서 코드를 실행한 다음 사용자는 데이터베이스에 액세스할 수 있습니다. 그런 다음 사용자는 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 인스턴스에 연결하는 사용자는 Windows에 의해 인증되므로 암호는 Windows에서만 변경할 수 있습니다.
자세한 내용은 sp_password(Transact-SQL)를 참조하십시오.