현재 SQL Server 2005를 사용 중이고 몇 달 전에 데이터베이스를 복원하려고 시도하지만 계정을 만들려고 할 때 데이터베이스를 복원하면 해당 계정이 이미 있지만 표시되지 않는다고 알려줍니다. 그것은 보안 아래. 나는 그 계정을 떨어 뜨리려고 노력했지만 그 계정은 존재하지 않는다는 것을 나에게 말해 준다. 그러나 내가 그것을 만들려고 할 때 그것이 존재한다는 것을 말해 준다. 그것은 나를 미치게 만든다. 나는 그 계정을 서버와 모든 연결된 서버와 모든 데이터베이스에서 완전히 제거했다. 다시 작성하려고 시도했지만 다시 말하면 모든 데이터베이스에서 작동한다. 어떤 아이디어가 될 수 있는지 또는 무엇을 확인해야합니까?SQL Server 계정 문제
답변
DBA로서 나는 항상이 문제를 겪고 있습니다. 그리고 GUI는별로 도움이되지 않습니다. SQL 서버에 원하는 계정이 있고 데이터베이스에 원하는 계정이 있지만 복원시 자동 연결되지 않습니다.
이 문제를 해결하는 실제 방법은 개인 계정을 사용 중지하는 것입니다. 활성 디렉터리 그룹의 구성원이라는 관점에서 DB에 대한 액세스 만 제공하십시오. 그런 다음 AD 그룹에 액세스 문제를 부여 할 수 있습니다. BTW : 개별 계정은 복원시 자동으로 다시 연결되지 않지만 그룹 액세스는 복원합니다.
다음은 동일한 문제를 해결하기 위해 사용하는 일부 코드입니다.
create procedure [dbo].[proc_FarSyncLogins] @TargetDB nvarchar(128)= '' as
begin
SET NOCOUNT ON
declare @cmd varchar(1000)
begin try
drop table master.dbo.NeededUsers
end try
begin catch
print 'could not: drop table master.dbo.NeededUsers'
end catch
set @cmd='select name collate Latin1_General_CI_AS as name,is_disabled
into master.dbo.NeededUsers
from ['[email protected]+'].sys.sql_logins'
--print @cmd
exec(@cmd)
print 'logins that need to be enabled'
select * from master.dbo.NeededUsers
declare @UserName nvarchar(128)
declare SyncUsers1 cursor fast_forward for SELECT Name FROM master.dbo.NeededUsers
OPEN SyncUsers1
FETCH NEXT FROM SyncUsers1 INTO @UserName
WHILE @@FETCH_STATUS = 0
BEGIN
set @cmd = ''
if @TargetDB <> ''
begin
set @[email protected]+'Use ['[email protected]+']; '+char(10)
end
begin try
SET @cmd = @cmd+'ALTER LOGIN ['[email protected]+'] ENABLE; '+char(10)
SET @cmd = @cmd+'exec sp_change_users_login @Action=''Auto_Fix'', @UserNamePattern ='''[email protected]+'''; '+char(10)
PRINT @cmd
EXEC(@cmd)
end try
begin catch
Print 'Failed :'[email protected]
end catch
FETCH NEXT FROM SyncUsers1 INTO @UserName
END
CLOSE SyncUsers1
DEALLOCATE SyncUsers1
end
은 그럼 그냥
exec master.dbo.proc_FarSyncLogins '<yourDBName>';
그것은 확정적 해키, 당신은 당신이 모든 작업을 수행하는 의미 확인하기 위해주의 깊게 출력을 읽을 수 있습니다. 그러나 대부분의 경우 이전에 가지고 있던 모든 것을 복원하고 싶을뿐입니다.
계정이 데이터베이스 및 서버 수준에 있습니다.
데이터베이스 자체에서 계정을 삭제해야하지만 서버에없는 계정은 서버에서 삭제해야합니다. 당신은 ... 데이터베이스에
use {yourdatabasename}
go
EXEC sp_dropuser '{username}'
당신은 고아가있는 사용자 계정을 시도했습니다. 한 서버에서 다른 서버로 데이터베이스를 복사/이동할 때 매우 일반적인 문제입니다. 데이터베이스 사용자로부터 제거 할 필요가 있습니다. 더 좋은 옵션은 Server Login을 생성하고 그 로그인을 고아 데이터베이스 사용자와 매핑하는 것입니다. 다시 약간의 데모 스크립트를 사용하여 my blog에 그것에 대해 썼다면, 당신은 그것을보고 싶을지도 모른다. 또는 고아 사용자를 관리하는 데 사용할 수있는 SP의 사용에 대해서는 this MSDN link을 참조하십시오.
- 1. SharePoint 서비스 계정 및 원격 SQL Server
- 2. SQL Server 네트워크 서비스 계정 사용 권한
- 3. Powershell을 사용하여 SQL Server 서비스 계정 변경
- 4. SQL Server 계정 암호를 복구하는 방법은 무엇입니까?
- 5. SQL Server 올바른 주말 계정 방법
- 6. SQL Server 및 Guest 계정 - 이것은 무엇입니까?
- 7. SQL Server 연결 문제
- 8. SQL Server 연결 문제
- 9. SQL Server 쿼리 문제
- 10. SQL Server 로그온 문제
- 11. SQL Server 연결 문제
- 12. DateDiff SQL Server 문제
- 13. SQL Server 쿼리 문제
- 14. SQL Server 성능 문제
- 15. SQL Server 쿼리 문제
- 16. ID SQL Server 문제
- 17. SQL Server 풀 문제
- 18. SQL Server 연결 문제
- 19. 계정 Registeration 문제
- 20. SQL Server 2008의 인코딩 문제
- 21. SQL Server 중첩 커서 문제
- 22. SQL Server 병합 문문 문제
- 23. SQL Server 2005 성능 문제
- 24. SQL Server 2005 설치 문제
- 25. SQL Server 프로파일 러 문제
- 26. SQL Server 시작 ... 초급 문제
- 27. SQL Server 임시 DB 문제
- 28. Sql Server 2005/08 문제
- 29. C# : SQL Server 쿼리 문제
- 30. SQL Server 2008 설치 문제
안녕하세요. 빠른 답장을 보내 주셔서 감사합니다. 그래, 나는 그것을 시도하고 작동하지 않습니다 ... 아직도 사용자가 삭제할 존재하지 않는 오류를 제공합니다. –
여기를 보시나요? select * from sys.sysusers –
그리고 여기서 master를 볼 수 있습니다. select * from sys.syslogins –