CREATE VIEW [dbo].[COMITEM1]
WITH SCHEMABINDING
AS
SELECT itemno FROM ERP.DBO.TItem
GO
이렇게 해서 실행 할 경우 오류가 발생합니다.
이름 'ERP.DBO.TItem'이(가) 스키마 바인딩에 적합하지 않으므로 뷰 'dbo.COMITEM1'을(를) 스키마 바인딩할 수 없습니다. 이름은 두 부분으로 구성되어야 하며 개체는 자체 참조할 수 없습니다.
오류가 왜나는지 알수가 없어서..
참고로 생성하는 DB는 MES라는 DB에서 생성하고 테이블은 ERP라는 DB에 있습니다.
DB를 ERP로 해서 생성하면 되던데..
다른 데이터베이스에 테이블로 뷰를 만들수 없는지..
WITH SCHEMABINDING 이 옵션이 없으면 오류없이 생성은되는데 꼭 인덱스를 걸어야해서..
답변 꼭 부탁드립니다.
Comment 4
-
맨즈밤
2013.06.12 10:43
-
pobiblue
2013.06.12 11:38
db가 틀려서 erp.을 명시했고 grop by는 안함
-
정선
2013.06.12 10:47
필요한 인덱스는 테이블에 직접 생성하면 됩니다. 뷰 쿼리에서도 해당 인덱스를 사용하게 됩니다.
인덱싱된 뷰(Indexed View) 기능은 특별한 용도/목적으로 사용되는데요, 혹시 어떤 목적이신지요?
그 기능이 꼭 필요하시다면 동일 DB, SCHEMABINDING 옵션 지정 등은 필수 요건으로 맞추어 주셔야 합니다.
온라인 설명서에서 "인덱싱된 뷰 만들기" 부분을 찾아보시면 해당 요건들을 알 수 있으니 꼭 확인해 보세요.
도움이 되시길...
-
pobiblue
2013.06.12 11:40
질문올리려고 짧게 적었는데 테이블을 10개넘게 조인해서 한개의 뷰로 만듭니다.
다른시스템의 내용을 저희쪽에 맞게 뷰로 만들어서 조회하는건데 속도가 문제되어 뷰자체에 인덱스를 걸려고합니다.
10개 조인을 할경우 해당테이블에 각각 인덱스가 존재해서 그 인덱스를 타서 문제가 되는것으로 보여짐..
ERP.DBO.TItem 여기서 ERP 빼고 DBO.TItem 로 해보시구요...SELECT 구문에 CNT=COUNT_BIG(*) 를 하나 추가해주셔야 할겁니다.
SELECT CNT=COUNT_BIG(*),itemno FROM DBO.TItem GROUP BY itemno