이상적으로는 복원을 수행하기 전에 사용자와 권한을 스크립팅하는 것이 좋습니다. 그 일이 발생하지 않았다면 사실 이후에 문제를 해결해야하며 기회가 놓칠 수는 있지만 기회의 약 90 %를 얻을 수 있어야합니다.
가장 먼저 확인해야 할 것은 새 서버에 동일한 로그인이 있는지 여부입니다. 그렇지 않은 경우 새 서버에서 로그인을 생성 할 수 있는지 확인해야합니다. 그들이 생성되어야한다고 생각하지 마십시오. 왜 그들이 존재하지 않았는 지에 대한 합당한 이유가있을 수 있습니다. 그런 다음 sysusers 테이블을 통해 파고 들어 만들 수 있습니다.
다음과 유사한 것을 실행하여 고아 사용자를 수정할 수 있습니다.
DECLARE @username varchar(25), @loginsid varbinary(85)
DECLARE fixusers CURSOR
FOR
SELECT UserName = name
FROM sysusers
WHERE issqluser = 1
and (sid is not null and sid <> 0x0)
and suser_sname(sid) is null
and name in (select name from master..syslogins)
ORDER BY name
OPEN fixusers
FETCH NEXT FROM fixusers
INTO @username
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC sp_change_users_login 'update_one', @username, @username
FETCH NEXT FROM fixusers
INTO @username
END CLOSE fixusers
DEALLOCATE fixusers
이 코드는 SQL2008에서 작동하지만 SQL2000과 호환되도록 작성되었습니다.