SQL Server

인덱스된뷰는 다른 데이터베이스간의 테이블로 생성이 안된다.

AWS-in 2015. 10. 12. 16:01

인덱스된 뷰(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