我正在從事stored procedure
的SQL SERVER 2012
。Sql服務器突然停止識別我的新列
一切都很好,直到我去吃飯。然後,因爲我回來了,我的存儲過程無法編譯。
它說在我今天早上添加的每一列上都有invalid column name
。
但我可以運行查詢和列是有喜歡
SELECT FirstName FROM dbo.Contacts
另外,我沒有修改的代碼。
我試圖重啓
我重新列
我刷新
intelliSense
緩存
沒有運氣...
這裏的一部分代碼
DECLARE curContact Cursor
FOR SELECT dbo.Contacts.ContactID, dbo.Contacts.FirstName, dbo.Contacts.MiddleName, dbo.Contacts.LastName, dbo.Contacts.ContactName FROM dbo.Contacts
FOR UPDATE OF dbo.Contacts.FirstName, dbo.Contacts.MiddleName, dbo.Contacts.LastName
OPEN curContact
這裏的表結構
CREATE TABLE [dbo].[Contacts](
[ContactID] [int] NOT NULL,
[MillID] [int] NULL,
[ClientID] [int] NULL,
[FirstName] [nvarchar](64) NULL,
[MiddleName] [nvarchar](64) NULL,
[LastName] [nvarchar](64) NULL,
[Gender] [bit] NULL,
[ContactName] [nvarchar](50) NULL,
[ContactTitle] [nvarchar](50) NULL,
[ContactPhoneNo] [nvarchar](50) NULL,
[ContactPhoneExt] [nvarchar](50) NULL,
[ContactFaxNo] [nvarchar](50) NULL,
[ContactEmail] [nvarchar](50) NULL,
[Comment] [nvarchar](max) NULL,
[CreatedBy] [nvarchar](50) NULL,
[CreatedDate] [datetime] NULL,
[ModifiedBy] [nvarchar](50) NULL,
[ModifiedDate] [datetime] NULL,
[ContactCellNo] [nvarchar](50) NULL,
[ContactPageNo] [nvarchar](50) NULL,
[ContactHomeNo] [nvarchar](50) NULL,
[ContactOtherNo] [nvarchar](50) NULL,
[Language] [nvarchar](15) NULL,
[CalendarQuantityEnglish] [smallint] NULL,
[CalendarQuantityFrench] [smallint] NULL,
[CalendarKeepBy] [nvarchar](50) NULL,
[CalendarComment] [nvarchar](250) NULL,
[OtherQuantityEnglish] [smallint] NULL,
[OtherQuantityFrench] [smallint] NULL,
[OtherKeepBy] [nvarchar](50) NULL,
[OtherComment] [nvarchar](250) NULL,
[Validated] [date] NULL,
[ValidedByWho] [nvarchar](64) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
有沒有人有一個想法?
顯示您的代碼。您的存儲過程是否使用dbo。它的名字中的前綴?你正在引用的表格是否有正確的前綴? –
是的,我發佈了代碼在我的問題 – Marc
這個遊標的目的是什麼?哪一列給出錯誤?你可以爲'dbo.Contacts'表顯示'CREATE TABLE'腳本嗎?你確定你的程序在同一個數據庫中嗎? (順便說一句,如果IntelliSense緩存沒有更新,那麼在嘗試編譯過程時,SQL Server不會收到錯誤 - 這不是SQL Server檢查對象/列的有效性的地方。) –