2012-01-24 13 views
2

我正在VS2010中添加一個數據庫項目。我創建了一個SQL 2008數據庫項目,指向開發服務器,它似乎已經生成了所有適當的模式對象。然而,所有的CREATE TRIGGER腳本有以下錯誤:2008年的觸發器腳本SQL03120錯誤DB項目

SQL03120: Cannot find element referenced by the supporting statement 

谷歌搜索該錯誤消息沒有多少回報,而且似乎指向使用代替create這是不是這裏的情況ALTER腳本。這是腳本的一個示例:

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是歸咎於錯誤的行是執行系統進程內的最後一行。對我而言,突出的是dbo模式中沒有任何對象存在。該表位於Content架構中,並且在歷史架構中具有匹配表。看起來[Content]和[History]限定符可以解析。無法找出這一個...

+0

原來,VS2010數據庫項目不符合創建語句中的觸發器名稱,儘管它正在SQL中編寫這種方式... – Vardoj

回答

0

由於這篇文章出現時,當您在谷歌上搜索上述錯誤:這個錯誤的另一個原因是,如果你有一個存儲過程中的數據庫項目指定ALTER PROCEDURE而不是CREATE PROCEDURE