일반적 으로이 스키마에서 개체를 만들려면 스키마를 명시 적으로 지정 해야합니다 dbo
.
현재 db_owner
기본 스키마는 dbo
이므로 개체를 만드는 동안 dbo 스키마를 지정하지 않아도 문제가 없습니다. 그러나 다른 (Windows) 사용자에게는 동일하지 않습니다.
사용자는 Windows group
기본 스키마가없는 멤버입니다 . 이 경우 사용자가 개체를 만들 때 해당 사용자와 스키마가 만들어지며 여기에 문서화되어 있습니다. CREATE SCHEMA (Transact-SQL)
암시 적 스키마 및 사용자 생성
경우에 따라 사용자는 데이터베이스 사용자 계정 (데이터베이스의 데이터베이스 주체)없이 데이터베이스를 사용할 수 있습니다. 다음 상황에서 발생할 수 있습니다.
로그인에는 CONTROL SERVER 권한이 있습니다.
Windows 사용자에게는 개별 데이터베이스 사용자 계정 (데이터베이스의 데이터베이스 보안 주체)이 없지만 데이터베이스 사용자 계정 (Windows 그룹의 데이터베이스 보안 주체)이있는 Windows 그룹의 구성원으로 데이터베이스에 액세스합니다.
데이터베이스 사용자 계정이없는 사용자가 기존 스키마를 지정하지 않고 개체를 만들면 해당 사용자의 데이터베이스에 데이터베이스 주체 및 기본 스키마가 자동으로 만들어집니다. 작성된 데이터베이스 프린시 펄 및 스키마는 사용자가 SQL Server에 연결할 때 사용한 이름 (SQL Server 인증 로그인 이름 또는 Windows 사용자 이름)과 동일한 이름을 갖습니다.
Windows 그룹 기반 사용자가 오브젝트를 작성하고 소유 할 수있게하려면이 동작이 필요합니다. 그러나 의도하지 않은 스키마 및 사용자 작성이 발생할 수 있습니다. 암시 적으로 사용자 및 스키마를 작성하지 않으려면 가능할 때마다 명시 적으로 데이터베이스 프린시 펄을 작성하고 기본 스키마를 지정하십시오. 또는 두 부분 또는 세 부분으로 된 개체 이름을 사용하여 데이터베이스에서 개체를 만들 때 기존 스키마를 명시 적으로 명시하십시오.
이 문제를 해결하려면 모든 yor 사용자 -Windows 그룹에 dbo
스키마를 지정 default schema
하거나 객체를 만들 때 스키마를 명시 적으로 작성하십시오. 항상.