반응형

/********************************************************************************************
-- Title : [2k8] CLR function 사용시 힌트 에러
-- Key word : clr function dll 함수
********************************************************************************************/

DLL 테이블함수를 사용하는 뷰1를 참조하여 뷰2를 만든 후 해당 뷰2를 조회할때 다음과 같은
오류가 발생할 수 있습니다.

메시지 4139, 수준 16, 상태 1, 줄 2
이 쿼리는 뷰 "schema2.tbl2"을(를) 통해 힌트가 있는 CLR(공용 언어 런타임) 테이블 반환 함수 "CLR.dbo.fn_ttt"을(를) 참조하므로 처리할 수 없습니다.


이때, 뷰2에서 참조하는 뷰1의 nolock 힌트를 제거해 주세요.

예)
-- 스탠다드
ALTER VIEW schema2.tbl2
AS
    SELECT b.*
    FROM schema1.tbl2_b a with(nolock)
    CROSS APPLY CLR.dbo.fn_ttt(a.pk, a.seq, a.tbl_number, a.tbl_date, a.tbl_guest) b;
     --> DLL 테이블 함수 참조

-- 서비스
ALTER VIEW schema.tbl
AS
    SELECT b.pk1
  , a.seq
  , a.tbl_number
  , a.tbl_date
  , a.tbl_guest
  , a.section
  , modify = 1
    FROM schema2.tbl2 AS a WITH (NOLOCK) --> nolock제거
 INNER JOIN schema4.groups AS b WITH (NOLOCK)
  ON a.pk = b.pk and svc = 1;

GO

 

 

 

반응형

+ Recent posts