데이터베이스를 복원하고 db_owner로 새 사용자 (로그인 한 동일한 사용자)를 작성했습니다. 이제 데이터베이스 다이어그램에 오류가 있음을보고 싶을 때
이 데이터베이스에 유효한 소유자가 없기 때문에 데이터베이스 다이어그램 지원 오브젝트를 설치할 수 없습니다. 계속하려면 먼저 데이터베이스 특성 대화 상자의 파일 페이지 또는 권한 부여 명령문을 사용하여 데이터베이스 소유자를 유효한 로그인으로 설정 한 후 데이터베이스 지원 오브젝트를 추가하십시오.
이제 데이터베이스 속성의 파일 페이지에서 소유권을 변경하려고 할 때 다음과 같은 오류가 발생합니다.
데이터베이스 ‘ABC’에 대한 소유자 설정에 실패했습니다. (Microsoft.SqlServer.SMO) 추가 정보 : SMO에서 예외가 발생했습니다. 제안 된 새 데이터베이스 소유자 인 James-PC \ James는이 데이터베이스에서 사용자 James로 매핑됩니다. 매개 변수 이름 : James-PC \ James “
다른 시스템에서 데이터베이스 백업을 복원 한 후이 컴퓨터에서 데이터베이스 다이어그램을 볼 수 있도록 문제를 해결하도록 도와주십시오.
답변
데이터베이스 소유자는 SID에 의해 정의 된대로 데이터베이스를 소유하는 sys.server_principals의 로그인입니다. 복원 후 데이터베이스를 복원하는 데 사용 된 로그인이 데이터베이스의 이전 소유자 인 로그인이 아닌 경우가 있습니다. (이것은 서버간에 데이터베이스를 이동할 때 발생할 가능성이 훨씬 높습니다.)
따라서 문제가있는 세 가지 설정이있을 수 있습니다.
-
데이터베이스 owner_sid가 데이터베이스의 db_owner sid와 같지 않습니다. 데이터베이스 ABC에 대해 이것을 다음과 같이 비교할 수 있습니다.
sys.databases에서 owner_sid를 선택하십시오. 여기서 name = ‘ABC’;
ABC.sys.database_principals에서 sid를 선택하십시오. WHERE name = ‘dbo’;
-
다음으로 제안 된 데이터베이스 owner_sid도 sys.database_principals의 사용자로 존재한다는 메시지가 표시됩니다. 제안 된 소유자 매핑에 대한 오류 메시지에서이를 알 수 있습니다.
따라서 귀하의 단계는 다음과 같습니다
USE ABC;
DROP USER James;
ALTER AUTHORIZATION ON DATABASE::ABC TO [James-PC\James];
필요하지 않은 사용자를 dbo로 만들었으므로 삭제했습니다. 그것이 실패하면, 로그인은 데이터베이스의 소유자가 될 수 있습니다.
편집 : SSMS를 사용하여 ABC 데이터베이스에서 James 사용자를 삭제할 수도 있습니다. 그런 다음 데이터베이스 특성 파일 탭으로 돌아가서 데이터베이스 소유자를 설정할 수 있습니다. (미안하지만 스크립트를 생각하는 경향이 있습니다.)
답변
- 데이터베이스를 마우스 오른쪽 버튼으로 클릭
- 속성
- 파일을 선택하십시오
- 올바른 / 설정 소유자 (pc \ you 또는 “…”를 클릭하여 찾아서 선택)
이것은 SQL Server Management Studio v17.1에서 나를 위해 일했습니다.