Sql server 列名无效-列不存在
我在一个表中添加了一个新列,如下所示:Sql server 列名无效-列不存在,sql-server,Sql Server,我在一个表中添加了一个新列,如下所示: ALTER TABLE [Invoice].[Invoice] ADD [DaysToPay] int GO ALTER TABLE [Invoice].[Invoice] ADD CONSTRAINT [DF_Invoice_DaysToPay] DEFAULT ((30)) FOR [DaysToPay] GO UPDATE [Invoice].[Invoice] SET [DaysToPay] = 30 GO ALTER TABLE [Invoic
ALTER TABLE [Invoice].[Invoice] ADD [DaysToPay] int
GO
ALTER TABLE [Invoice].[Invoice] ADD CONSTRAINT [DF_Invoice_DaysToPay] DEFAULT ((30)) FOR [DaysToPay]
GO
UPDATE [Invoice].[Invoice] SET [DaysToPay] = 30
GO
ALTER TABLE [Invoice].[Invoice] ALTER COLUMN [DaysToPay] int NOT NULL
GO
如果我现在从[Invoice].[Invoice]中选择*,我会得到一个无效的列名“DaysToPay”
错误。无论是通过SSM还是任何其他方式(通过代码)运行语句,我都会遇到此错误
当我选择特定列时,无论是否使用该列,都会发生相同的错误。e、 g.从[Invoice].[Invoice]
中选择[InvoiceID]
我已关闭SSMS并重新启动SQL服务。还是一样的错误
该列是在获取错误的同一用户下添加的,该用户是架构的所有者
这两条语句都返回0行:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'DaysToPay'
SELECT *
FROM sys.columns
WHERE Name = N'DaysToPay'
我试过Ctrl+Shift+R,但我不认为这是SSMS的事情,也没什么不同
数据库未被复制
我运行了一个dbccopentran
are,但没有任何活动
此后,我删除了该列(在SSMS中手动使用设计器),但仍然收到相同的错误。该表在SSMS设计器中正确显示(与我手动删除它之前一样)
除了删除并重新创建表格之外,还有其他想法吗
编辑:
运行的脚本的其余部分如下所示(我删除了某些列,以免识别):
如果您使用数据库名称完全限定所有这些查询,会发生什么情况?您确定连接到了正确的数据库?当您运行
SELECT*FROM INFORMATION\u SCHEMA.COLUMNS,其中TABLE\u name='Invoice'
时会发生什么情况?检查架构和列名,是否有异常?@TabAlleman相同错误:(SELECT*FROM[MyDB].[Invoice].[Invoice].[Invoice]
@Igor它显示在列表中(现在我已使用脚本将其添加回来,但仍然会出现错误)
ALTER PROCEDURE [Invoice].[Invoice_Save] (
@InvoiceID int,
@TypeID int,
@InvoiceNumber int,
@InvoiceDate datetime,
@DatePaid datetime,
@PaymentEnteredBy int,
@AmountPaid float,
@PaymentTypeID int,
@HasVAT bit,
@VATRate float,
@TranslationPercentageCharge float,
@IsVoid bit,
@VoidDate datetime,
@VoidBy int,
@DateSent datetime,
@SentBy int,
@PurchaseOrderNumber varchar(100),
@BillingContact varchar(255),
@BillingAddress varchar(MAX),
@BillingContactEmail nvarchar(255),
@BillingContactTelNo varchar(50),
@Notes varchar(MAX),
@CompanyID int,
@DaysToPay int,
@DateCreated datetime,
@CreatedBy int,
@LastUpdated datetime,
@LastUpdatedBy int
)
AS
IF NOT EXISTS (SELECT * FROM [Invoice].[Invoice] WHERE [InvoiceID] = @InvoiceID)
BEGIN
INSERT INTO [Invoice].[Invoice] ([TypeID], [InvoiceNumber], [InvoiceDate], , [DatePaid], [PaymentEnteredBy], [AmountPaid], [PaymentTypeID], [HasVAT], [VATRate], [TranslationPercentageCharge], [IsVoid], [VoidDate], [VoidBy], [DateSent], [SentBy], [PurchaseOrderNumber], [BillingContact], [BillingAddress], [BillingContactEmail], [BillingContactTelNo], [Notes], [CompanyID], [DaysToPay], [DateCreated], [CreatedBy], [LastUpdated], [LastUpdatedBy])
VALUES (@TypeID, @InvoiceNumber, @InvoiceDate, @DatePaid, @PaymentEnteredBy, @AmountPaid, @PaymentTypeID, @HasVAT, @VATRate, @TranslationPercentageCharge, @IsVoid, @VoidDate, @VoidBy, @DateSent, @SentBy, @PurchaseOrderNumber, @BillingContact, @BillingAddress, @BillingContactEmail, @BillingContactTelNo, @Notes, @CompanyID, @DaysToPay, @DateCreated, @CreatedBy, @LastUpdated, @LastUpdatedBy)
SELECT MAX([InvoiceID]) AS MaxID FROM [Invoice].[Invoice]
END
ELSE
UPDATE [Invoice].[Invoice]
SET [TypeID] = @TypeID,
[InvoiceNumber] = @InvoiceNumber,
[InvoiceDate] = @InvoiceDate,
[DatePaid] = @DatePaid,
[PaymentEnteredBy] = @PaymentEnteredBy,
[AmountPaid] = @AmountPaid,
[PaymentTypeID] = @PaymentTypeID,
[HasVAT] = @HasVAT,
[VATRate] = @VATRate,
[TranslationPercentageCharge] = @TranslationPercentageCharge,
[IsVoid] = @IsVoid,
[VoidDate] = @VoidDate,
[VoidBy] = @VoidBy,
[DateSent] = @DateSent,
[SentBy] = @SentBy,
[PurchaseOrderNumber] = @PurchaseOrderNumber,
[BillingContact] = @BillingContact,
[BillingAddress] = @BillingAddress,
[BillingContactEmail] = @BillingContactEmail,
[BillingContactTelNo] = @BillingContactTelNo,
[Notes] = @Notes,
[CompanyID] = @CompanyID,
[DaysToPay] = @DaysToPay,
[DateCreated] = @DateCreated,
[CreatedBy] = @CreatedBy,
[LastUpdated] = @LastUpdated,
[LastUpdatedBy] = @LastUpdatedBy
WHERE [InvoiceID] = @InvoiceID
GO