2012-01-24 4 views
2

VS2010에서 데이터베이스 프로젝트를 추가하려고합니다. 나는 개발 서버를 가리키는 SQL 2008 DB 프로젝트를 만들었고 적절한 스키마 개체를 모두 생성 한 것으로 보인다. 많은 반환하지 않는 오류 메시지가 인터넷 검색을2008 년 DB 프로젝트의 트리거 스크립트 SQL03120에

SQL03120: Cannot find element referenced by the supporting statement 

, 대신 여기에 케이스하지 않은 CREATE의 ALTER를 사용하여 스크립트를 가리 키도록 보인다 그러나 트리거를 CREATE 모든 스크립트는 다음과 같은 오류가 있습니다. 다음은 스크립트 중 하나의 예입니다.

CREATE TRIGGER [TR_t_TABLE_TRIGGERNAME] ON [content].[t_TABLE] 
FOR INSERT 
AS 
BEGIN 
    IF (SELECT COUNT(*) FROM inserted) > 0 
     BEGIN 
      DECLARE @columnBits VARBINARY(50) 
      SELECT @columnBits = COLUMNS_UPDATED() | CAST (0 AS BIGINT) 
      INSERT INTO [history].[t_TABLE] 
        (
         ....  
        ) 
        SELECT 
         .... 
        FROM inserted 
     END 
END 
GO 
EXECUTE sp_settriggerorder @triggername = N'[Content].[TR_t_TABLE_TRIGGER]', @order = N'last', @stmttype = N'insert'; 

Visual Studio에서 오류의 원인이되는 줄은 시스템 proc을 실행하는 마지막 줄입니다. 두드러진 점은 dbo 스키마에 존재하는 개체가 없다는 것입니다. 테이블은 내용 스키마에 있으며 기록 스키마에 일치하는 테이블이 있습니다. 그래도 [Content]와 [History] 한정자를 해석 할 수있을 것 같습니다. 이걸 알아낼 수 없어요 ...

+0

VS2010 db 프로젝트가 SQL에서 그런 방식으로 작성되었지만 create 문에서 트리거 이름을 한정하지 않는다는 사실이 밝혀졌습니다. – Vardoj

답변

0

Google에서 위의 오류를 검색하면이 게시물이 표시됩니다.이 오류의 또 다른 이유는 ALTER PROCEDURE을 지정하는 데이터베이스 프로젝트에 저장 프로 시저가있는 경우입니다 CREATE PROCEDURE 대신.