데이터베이스 다이어그램 지원 개체를 설치할 수 없습니다 ... 유효한 소유자가 없습니다


132

SQL Server 2008을 사용하여 데이터베이스 다이어그램을 만들려고했지만 오류가 발생합니다.

이 데이터베이스에 유효한 소유자가 없기 때문에 데이터베이스 다이어그램 지원 오브젝트를 설치할 수 없습니다. 계속하려면 먼저 데이터베이스 특성 대화 상자의 파일 페이지 또는 ALTER AUTHORIZATION 문을 사용하여 데이터베이스 소유자를 유효한 로그인으로 설정 한 후 데이터베이스 다이어그램 지원 오브젝트를 추가하십시오.

그런 다음 다음을 시도했습니다.

EXEC sp_dbcmptlevel 'Ariha', '90';
GO
ALTER AUTHORIZATION ON DATABASE::Ariha TO [WIN-NDKPHUPPNFL\Administrator]
GO
USE Ariha
GO
EXECUTE AS USER = N'dbo' REVERT
GO

다음 오류가 나타납니다.

메시지 15404, 수준 16, 상태 11, 줄 1 Windows NT 그룹 / 사용자 'WIN-NDKPHUPPNFL \ Administrator', 오류 코드 0x534에 대한 정보를 얻을 수 없습니다.

문제는 PC의 이름이 "DevPC"로 변경되었다는 것입니다. 또한 업데이트 스크립트에서도이 이름을 변경했지만 여전히 동일한 오류 15404입니다.

이 성가신 오류를 해결하려면 어떻게해야합니까?


4
다른 머신에서 백업을 복원 할 때도이 문제가 발생합니다.
Tim Abell

다른 머신에서 db를 복원 할 때 두 명령을 실행하여이 오류를 해결할 수 있습니다. 1) alter authorization on database::[db_name] to [sa], 2) 동일한 명령을 다시 실행 [sa]하고 복원 직후 데이터베이스를 소유 한 사용자로 바꿉니다.
James L.

답변:


182

데이터베이스 소유권을 위해서는 SQL 인증 계정을 고려해야합니다. 그러면 계정이 오가거나 데이터베이스 나 인스턴스가 다른 서버로 이동하고 다음 PC 이름이 변경 될 염려가 없습니다. 우리가 사용하는 여러 시스템이 있습니다.

ALTER AUTHORIZATION ON DATABASE::Ariha TO [sa];

또는 소유자를 해당 로컬 관리자 계정으로 변경하려면 다음과 같아야합니다.

ALTER AUTHORIZATION ON DATABASE::Ariha TO [DevPC\Administrator];

머신의 이름을 바꾸면 이름이 DevPC있던 로컬 계정이 제거 WIN-ND...\Administrator되어 데이터베이스의 현재 소유자도 무효화됩니다.

SELECT @@SERVERNAME;정확하지 않은 경우 ( DevPC) 서버 이름 변경이 SQL Server 내에서 유지되도록하기 위해 다음을 발행 할 수도 있습니다.

EXEC sp_dropserver @server = N'old server name';
GO
EXEC sp_addserver @server = N'DevPC', @local = N'local';
GO

"WIN-NDKPHUPPNFL"sql 문을 사용했는데 작동하지만 ...이 설정이 맞습니까? 아니면 다른 작업을 수행해야합니까?
Rookian

글쎄, 그건 정말 달려있다. Windows 도메인 / 작업 그룹 사용자가 데이터베이스를 소유해야하는 경우해야 할 일이 더있을 것입니다. 개인적으로, 나는 이것이 문제가있는 것을 안다. 아마 이것을 먼저 읽어보십시오 : sqlblog.com/blogs/tibor_karaszi/archive/2009/12/30/…
Aaron Bertrand

1
saSQL 인증을 사용하지 않는 경우 설정에 문제가 있습니까?
Tim Abell

@AaronBertrand 안녕하세요 질문이 있습니다. 기본적으로 데이터베이스 데이터베이스 소유자를 만드는 경우 현재 Windows 사용자로 설정되고 현재 Windows 사용자도 관리자 인 경우. 왜 우리가 그것을 Sql Authantication Login으로 변경해야합니까? 실제로이 오류를 이해할 수 없습니다. sa 로그인으로 변경하면 작동합니다. 그러나 관리자 Windows 로그인도 시스템 관리자입니다. 도움을 줄 수 있습니까?
UfukSURMEN

나는 많은 데이터베이스를 복원했으며 각 데이터베이스의 속성에 유효한 사용자가 표시되었지만 OP의 질문에 오류가 표시되었습니다. 첫 번째 명령을 사용하여 변경 [sa]한 다음 이전이라고 말한 사용자에게 다시 변경했으며 더 이상 오류가 없습니다. 데이터베이스 복원이 데이터베이스 소유자를 올바르게 설정하지 못한 이유를 잘 모르겠습니다 ...
James L.

208

SQL Server Management Studio에서 다음을 수행하십시오.

  1. 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오.
  2. 옵션 페이지로 이동
  3. "호환성 수준"이라는 레이블이 붙은 드롭 다운에서 "SQL Server 2005 (90)"3-1을 선택하십시오. 비교 오류가 발생하면 "SQL Server 2008"을 선택하십시오.
  4. 파일 페이지로 이동
  5. 소유자 텍스트 상자에 "sa"를 입력하십시오. 5-1 또는 타원 (...)을 클릭하고 올바른 소유자를 선택하십시오.
  6. 확인을 누르십시오

이 작업을 수행 한 후에는 데이터베이스 다이어그램에 액세스 할 수 있습니다.

여기에 이미지 설명을 입력하십시오


2
데이터베이스에 소유자가 없어야하는 이유가 있습니까? 다른 사람의 제품 데이터베이스에 들어 왔는데 소유자 세트가 없습니다. 의도적인가요? (고객에게는 아는 사람이 없습니다).
Jason Kleban 2016 년

데이터베이스에는 소유자가 있어야합니다. 정당한 소유자 대신 "sa"를 선택하면 위의 오류를 쉽게 해결할 수 있습니다. 그러나 정당한 소유자를 선택하면 문제가 해결되었습니다.
Lesly Revenge

3
이 단계에서 호환성 수준을 변경하는 목적을 누군가 설명 할 수 있습니까? 파일 아래에서 소유자를 'sa'로 설정하는 것만으로 충분했습니다 (SQL 인증이 활성화되어 있지 않더라도).
Tim Abell

이것은 나를 위해 일했습니다. 그래도 Databasename> Security에서 사용자를 제거해야했습니다.
Gezim

이것은 SQL Server 2017에서 Management Studio 17.9를 사용하여 1 단계를 수행하지 않고도 저에게
효과적이었습니다.

7
USE [ECMIS]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

효과가있다.


5

소유자 텍스트 상자에 "sa"대신 "SA"를 입력하십시오. 이것은 나를 위해 일했습니다.


5

나는 같은 문제가 있었다.
직장에서 같은 날 집에서 만든 다이어그램을보고 싶었습니다. 그러나 나는이 메시지 때문에 할 수 없었다.
데이터베이스 소유자가 예상대로 내 컴퓨터의 사용자라는 것을 알았습니다. 그러나 컴퓨터가 회사 도메인에 있고 회사 네트워크에 연결되어 있지 않기 때문에 데이터베이스에서 소유자를 확인할 수 없습니다.

그래서 내가 한 일은 소유자를 로컬 사용자로 변경하는 것이 었습니다 !
이것이 누군가를 돕기를 바랍니다.

데이터베이스, 속성, 파일, 소유자를 마우스 오른쪽 버튼으로 클릭하여 사용자를 변경하십시오.


3

이것은 나를 위해 그것을 고쳤다. 데이터베이스 특성 창의 '파일'섹션에있는 소유자를 설정하며 관리 스튜디오에서 스크립트로 작성합니다.

USE [your_db_name]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

sp_changedbowner 설명서 에 따르면 이 기능은 더 이상 사용되지 않습니다.

이스라엘의 대답을 바탕으로합니다. Aaron의 대답은 사용되지 않는 변형입니다.


3

데이터베이스 선택-마우스 오른쪽 버튼 클릭-속성 선택

페이지 왼쪽에서 FILE을 선택하십시오.

소유자 상자에서 3 개의 점 (…)이있는 단추를 선택하십시오.

이제 사용자를 선택하고 확인을 클릭하십시오.


0

방금 이것을 경험했습니다. 이 페이지의 제안과 SQL Authority 제안 (동일한 것)을 읽었으며 위의 어느 것도 작동하지 않았습니다.

결국 계정을 제거하고 동일한 사용자 이름 / 암호로 다시 만들었습니다. 그렇게해서 모든 문제가 사라졌습니다.

슬프게도, 이것은 내가 잘못한 것을 알지 못해서 다른 것을 공유 할 수 없다는 것을 의미합니다.


0

1. 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 2. 속성을 선택합니다. 3. 호환성 수준에서 옵션을 선택하고 Microsoft sql 2008을 사용하는 경우 sql 2008 [100]을 선택하십시오.

4. 그런 다음 파일을 선택하고 소유자의 텍스트 상자에 (sa)를 씁니다.

100 %가 저에게 효과적입니다.


0

이 문제를 해결하는 더 쉬운 방법은 데이터베이스 이름을 마우스 오른쪽 단추로 클릭하고 "새 쿼리"를 선택한 다음 "exec sp_changedbowner 'sa'"를 입력하고 쿼리를 실행하는 것입니다. 그럼 당신은 갈 것입니다.


0

SQL Server Management Studio를 microsofft하려면 관리자로 마우스 오른쪽 단추를 클릭하고 관리자 권한으로 실행해야합니다.


0

쿼리 편집기에서만 실행하면됩니다. ALTER AUTHORIZATION ON DATABASE :: YourDatabase TO [domain \ account];


-3

실제 문제는 기본 소유자 (dbo)에 로그인이 전혀 없다는 것입니다. sa 로그인을 데이터베이스 소유자에 매핑하려고 할 때 "사용자, 그룹 또는 역할 'dbo'라는 다른 오류가 발생했습니다. 이미 존재합니다 ... ". 그러나이 코드를 사용하면 실제로 작동합니다.

EXEC sp_dbcmptlevel 'yourDB', '90';

가다

"yourLogin"에 대한 데이터베이스 :: yourDB에 대한 권한 변경

가다

[yourDB] 사용

가다

사용자로 실행 = N'dbo '역

가다


-3

데이터베이스를 마우스 오른쪽 단추로 클릭 한 다음 속성을 선택하십시오. 호환성 수준에서 옵션을 선택하십시오. Microsoft sql 2008을 사용하는 경우 2008 대신 sql 2005 [90]를 선택하십시오. 그런 다음 파일을 선택하고 소유자의 텍스트 상자에 (sa)를 쓰십시오. 아마 작동합니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.