SQL Server 2008 기본 스키마가 존중되지 않습니까?


9

테스트 목적으로 SQL 2008 데이터베이스를 다른 서버로 복사했습니다. 로그인하는 일반 사용자는 특정 스키마의 일부 개체를 사용합니다. 사용자 foo와 스키마 라고 가정 해 봅시다 bar.

foo의 기본 스키마는 bar인스턴스 및 데이터베이스 레벨에 있습니다. 그러나 foo로그인 bar하면 정규화 된 이름을 사용하지 않고 스키마 에서 객체를 찾을 수 없습니다 .

여기서 기본 스키마가 작동하지 않는 이유는 무엇입니까?

답변:


13

SQL Server에 대한 foo 사용자 sysadmin 권한이 있습니까? 그렇다면 sysadmin 사용자는 특정 데이터베이스에 대한 사용자 특성에 설정된 것과 상관없이 기본적으로 스키마 dbo를 지정합니다.

따라서 기본 스키마를 사용하려면 서버 역할 sysadmin 대신 db_owner, db_datawriter 등의 데이터베이스 역할이 있어야합니다.

귀하의 사건이 아닌 경우 알려주십시오.


1
당신은 신이고 나는 당신의 지식에 절합니다, 나는 이것에 부딪 칠 때까지 당황했습니다!
Jens

1

이 문제가 발생할 수있는 다른 시나리오 (SQL 2008 R2) ...

기존 스키마와 연결하려는 SQL 인증 로그인에 연결된 사용자가 있습니다. 로그인에는 sysadmin 권한이 없으므로 위의 해결책은 도움이되지 않았습니다.

결국 데이터베이스가 여전히 SQL 2000 호환 모드로 구성되었다는 것을 알았습니다. SQL 2005로 변경하면 문제가 해결되었습니다.


이상하게도 나는 것 내 호환성 수준을 제외하고, (나는 기존의 스키마와 연관하려고하는 것을하는 SQL 인증 로그인에 연결된 사용자)이 문제를 갖는되는 'SQL 서버 2016 (130)'
tbone

0

새 서버의 기본 스키마는 dbo라고 가정합니다. 스키마가 데이터베이스와 함께 복사되지 않은 경우

해결책은 아니지만 아마도 이것이 도움이 될 수 있으며 msdn 기사를 살펴보십시오. http://msdn.microsoft.com/en-us/library/dd283095.aspx


foo새 서버 에서 기본 스키마를 구성했습니다 . bar인스턴스 사용자와 데이터베이스 사용자 레벨 둘 다에서 설정됩니다 .
John Cromartie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.