인덱스된뷰는 다른 데이터베이스간의 테이블로 생성이 안된다.
인덱스된 뷰(INDEXED VIEW)를 생성시 다른 데이터베이스의 테이블을 참조하여 생성을 하려고 하면 오류가 발생이 된다. By Design 이므로 생성할 수 없는 듯 싶다.
오류문구를 자세히 보면 "이름은 두 부분으로 구성되어야 하며 개체는 자체 참조할 수 없습니다
" Two-part만 가능하다는 것으로 보인다.
아래 예제로 확인하면 된다.
-- Create DB
USE MASTER
GO
CREATE DATABASE TD1
CREATE DATABASE TD2
GO
USE TD1
GO
CREATE TABLE TBL1 (COL1 INT)
GO
USE TD2
GO
CREATE TABLE TBL2 (COL1 INT)
GO
USE TD1
GO
-- Create View
CREATE VIEW CrossDBView
WITH SCHEMABINDING
AS
SELECT COL1
FROM TD2.dbo.TBL2
GO
/*
-- 오류발생함.
메시지 4512, 수준 16, 상태 3, 프로시저 CrossDBView, 줄 25
이름 'TD2.dbo.TBL2'이(가) 스키마 바인딩에 적합하지 않으므로 뷰 'CrossDBView'을(를) 스키마 바인딩할 수 없습니다. 이름은 두 부분으로 구성되어야 하며 개체는 자체 참조할 수 없습니다.
Error:
Msg 4512, Level 16, State 3, Procedure CrossDBView, Line 4
Cannot schema bind view 'CrossDBView' because name 'TD2.dbo.TBL2' is invalid for schema binding. Names must be in two-part format and an object cannot reference itself.
*/
-- Clean up
USE TD1
GO
DROP VIEW CrossDBView
GO
USE MASTER
GO
DROP DATABASE TD1
DROP DATABASE TD2
GO