답변:
SQL Server 2000에서와 같이 dbo 스키마 사용으로 돌아가려면 테이블을 dbo 스키마로 다시 이동할 수 있습니다.
ALTER SCHEMA dbo TRANSFER erpadmin.tablename;
dbo 이외의 스키마를 사용하려는 경우 다른 방법으로 사용자의 기본 스키마를 설정 erpadmin
한 다음 스키마를 지정하지 않으면이를 기본값으로 사용합니다. sysadmin 고정 서버 역할의 멤버는 기본적으로 무시 DEFAULT_SCHEMA
하고 사용 dbo
합니다.
ALTER USER erpadmin WITH DEFAULT_SCHEMA = erpadmin;
두 부분 이름 (schema.table)은 좋은 습관이므로 참조하는 테이블을 명시 적으로 지정할 수 있습니다. 일부 기능을 사용하려면 두 부분으로 된 이름을 사용해야하며 인덱싱 된 뷰가 한 예입니다.
데이터베이스 오브젝트에 액세스 할 때 스키마 이름을 지정해야하는 이유는 일반적인 경우입니다 . 지정되지 않고 기본 스키마가 아닌 스키마의 객체에 액세스하려고하면 현재보고있는 문제가 발생합니다.
실제 해결 방법은 응용 프로그램 (또는 현재 문제를 일으키는 쿼리 에이전트)을 명시 적으로 변경하는 것입니다.
쿼리를 작성할 때 'erpadmin'을 포함시켜야합니다. 혼동되는 모든 테이블 이름 앞에.
혼동되지 않습니다. 그것은 명백한 명명 규칙 입니다. 객체 셔플 링과 불일치를 피하기 위해 해당 명명법을 따르는 것이 좋습니다.
마이그레이션이 완료된 방식으로 인해 문제가 발생했을 수 있습니다. 소유자로 간주되지 않는 한 사용자에게 물건을 첨부해서는 안됩니다.
스키마는 의미에 따라 테이블을 분리하는 데 도움이됩니다. HR 부서에 대한 하나의 자원 테이블이 있고 프로덕션 부서에 대해 별도의 테이블을 원하면서 둘 다 동일한 데이터베이스에 유지한다고 가정하십시오. 이 경우 생산 스키마와 HR 스키마에 각각 이름이 resource 인 두 개의 테이블이있을 수 있습니다. 따라서 기본 스키마로 항목을 가져 오지 않는 한 shcema를 지정해야합니다.
다른 이유로 마이그레이션을 다시 실행하지 않는 경우 Adam Wenger의 전송은 현명한 옵션이어야합니다.
로 명령을 시작 USE [tablename]
참조 당신이보고있는 데이터베이스에 연결된 데이터베이스를 가지고 있지 않습니다 쿼리하면 아마 말한다 쿼리 창 상단에서 로그인 한 사용자에 대한 기본 아니다 "마스터"
[database_name]
그렇습니까?
select ... from table5 ;
다른 결과를 얻는 것입니다. 이는 계획 캐싱과 문제 해결에 좋지 않습니다 (큐 지원 담당자, "해당 쿼리는 여기에서 잘 실행됩니다"). 또한 함수 및 뷰의 색인 작성에 필요한 스키마 바인딩에는 두 개의 파트 이름이 필요합니다. TLDR : 게으른 중지-두 개의 부품 이름을 사용하십시오.