2008-10-02 3 views

답변

95

알아 냈습니다. SQL Management Studio에서는 데이터베이스 -> 속성 -> 파일 -> 소유자 필드를 마우스 오른쪽 단추로 클릭해야합니다. 이 필드를 해당 데이터베이스의 "dbo"사용자 이름과 관련된 로그인 이름/계정으로 변경하십시오. 선택한 로그인 이름/계정은 보안 -> 로그인 아래에있는 SQL Server에서 이미 설정되어 있어야합니다.

+8

2 년 후 이것을 알아야했습니다. 감사합니다. – Hogan

+0

그레이트 그레이트 찾으십시오! +1 – Sprintstar

+15

또는 코드를 통해 동일한 변경을하십시오 : someDB; go; exec sp_changedbowner 'newOwner' –

0

이것은 SQL Server 로그인이 아닌 Windows 로그인이므로 Active Directory의 사용자 계정에 연결되어 있으므로 로그인 이름을 '변경'할 수 없습니다.

새 Windows 사용자에 매핑 된 새 서버 로그인 (Windows)을 만들고 필요하면 이전 서버를 제거합니다. 그런 다음 로그인의 보안에> 당신은 DB를 사용자에게 로그인을 매핑하려는 경우 사용자 dbo가 '로 해당 데이터베이스에 로그인 (또는 db_owner 역할에 할당)

+1

SQL Server 보안 모델을 제대로 이해하지 못하는 것 같습니다. * 전체 서버 인스턴스 *에는 서버와 관련된 ** 로그인 **이 있습니다. SQL 또는 Windows 로그인 일 수 있습니다. 서버의 각 데이터베이스에는 해당 데이터베이스에 액세스 할 수있는 권한이있는 ** 사용자 ** 명이 있습니다. 데이터베이스 ** 사용자 **는 SQL ** 로그인 **과 연관되어 있지만 일반적으로는 동일하지만 필수 사항은 아닙니다. ** dbo **는 각 데이터베이스의 * 특별한 사용자 *입니다. OP는 데이터베이스에 대한 db_owner 권한을 가진 새로운 임의의 사용자를 시도하지 않습니다. 그는 다른 서버 로그인을 표준 ** dbo ** 사용자와 연결하려고합니다. –

5

을 사용자 매핑, 권한 당신은

sp_change_user_login 사용할 수 있습니다

exec sp_change_user_login 'Update_One', 'user', 'login'

+1

sproc은 'sp_change_users_login'(즉 _users_) 인 것으로 보입니다. 참고로 BOL은 또한 비추천이고 대신 ALTER USER가 미래에 사용되어야 함을 명시합니다. –

+1

일반적으로 이렇게하면 작동하지만 저장 프로 시저는 ** dbo ** 사용자를 이러한 방식으로 변경하려는 시도를 거부합니다. –

0

PantomTypist는 GUI를 사용하여 좋은 답변을 제공합니다. TSQL에서 동일한 결과를 얻으려면 다음 코드를 사용할 수 있습니다.

USE [My_Database_Name] 
GO 
EXEC dbo.sp_changedbowner @loginame = N'domain\abc', @map = false 
GO