분리된 사용자 문제 해결
loadTOCNode(2, 'moreinformation');
다른 서버로 데이터베이스 백업을 복원할 때 분리된 사용자 문제가 발생할 수 있습니다. 다음 시나리오에서는 문제와 해결 방법을 보여 줍니다.
1.
master 데이터베이스에 로그인을 추가하고 기본 데이터베이스를 Northwind로 지정합니다. Use master go sp_addlogin 'test', 'password', 'Northwind'
2.
앞에서 만든 사용자에게 액세스를 부여합니다. Use Northwind go sp_grantdbaccess 'test'
3.
데이터베이스를 백업합니다. BACKUP DATABASE Northwind
TO DISK = 'C:\MSSQL\BACKUP\Northwind.bak'
4.
데이터베이스를 다른 SQL Server로 복원합니다. RESTORE DATABASE Northwind
FROM DISK = 'C:\MSSQL\BACKUP\Northwind.bak'
복원된 데이터베이스에 해당하는 로그인이 없는 "test"라는 사용자가 포함되어 있으므로 "test"는 분리된 사용자가 됩니다.
5.
이제 분리된 사용자를 검색하기 위해 다음 코드를 실행합니다. Use Northwind go sp_change_users_login 'report'
Northwind 데이터베이스의 sysusers 시스템 테이블 항목과 master 데이터베이스의 sysxlogins 시스템 테이블 항목 간에 일치하지 않는 모든 로그인이 출력에 표시됩니다.
분리된 사용자 문제를 해결하는 단계
loadTOCNode(2, 'moreinformation');
1.
앞의 단계에서 검색한 분리된 사용자를 대상으로 다음 명령을 실행합니다. Use Northwind
go
sp_change_users_login 'update_one', 'test', 'test'
이 명령을 실행하면 서버 로그인 "test"와 Northwind 데이터베이스 사용자 "test"가 다시 연결됩니다. sp_change_users_login 저장 프로시저도 "auto_fix" 매개 변수를 사용하여 모든 분리된 사용자의 업데이트를 수행할 수 있지만 SQL Server가 이름을 기준으로 로그인과 사용자를 일치시키려고 하기 때문에 권장되는 방법이 아닙니다. 대부분의 경우 문제가 생기지 않지만 로그인이 사용자와 제대로 연결되지 않으면 사용자가 잘못된 권한을 가질 수 있습니다.
2.
앞의 단계에서 코드를 실행하면 사용자가 데이터베이스에 액세스할 수 있습니다. 이렇게 되면 사용자가 sp_password 저장 프로시저를 사용하여 암호를 변경할 수 있습니다. Use master
go
sp_password NULL, 'ok', 'test'
이 저장 프로시저는 Microsoft Windows NT 보안 계정에 사용할 수 없습니다. Windows NT 네트워크 계정을 통해 SQL Server에 연결하는 사용자는 Windows NT에 의해 인증되므로 사용자의 암호는 Windows NT에서만 변경할 수 있습니다. sysadmin 역할의 구성원만이 다른 사용자의 로그인 암호를 변경할 수 있습니다.
---출처 : http://support.microsoft.com/kb/274188/
댓글 없음:
댓글 쓰기