繁体   English   中英

SQL临时表中的“无效的列名”

[英]'Invalid column name' in SQL temp table

我在使用临时表和一些SQL存储过程时遇到了一个非常奇怪的错误。 在过去的几天中,我唯一能得到的错误是"Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding." 在提高C#中的超时阈值(从30秒到120秒)之后,我现在收到此错误:

"Invalid column name 'CoverageLimit'. Invalid column name 'Difference_Options'. Invalid column name 'CoverageLimit'. Invalid column name 'CoverageLimit'. Invalid column name 'CoverageLimit'. Invalid column name 'CoverageLimit'. Invalid column name 'CoverageLimit'. Invalid column name 'CoverageLimit'. Invalid column name 'Difference_Options'. Invalid column name 'Difference_Options'. Invalid column name 'CoverageLimit'."

但是,这些列在存储过程中引用的临时表中不存在,该存储过程在堆栈跟踪正在被击中的函数中调用。

CREATE TABLE [dbo].[#TEMP]
(
    FormEndorsementID [int] NOT NULL,
    [Restriction] bit,
    [Description] nvarchar(3000),
    [Type] nvarchar(255),
    [QQ_Reference] nvarchar(255),
    [Values] nvarchar(255)
) ON [PRIMARY]

我对此感到非常困惑,因此我执行了一个查询以查找存储过程中的CoverageLimitDifference_Options任何实例,并最终在两个完全不同的存储过程中找到了此临时表:

CREATE TABLE [dbo].[#TEMP]
(
    OptionID [int] IDENTITY(1,1) NOT NULL,
    CoverageLimit int,
    Difference_Options int
) ON [PRIMARY]

(注意:我不是设置此数据库模式的人。它非常需要清理/更新。)

现在,是否可能存在某种范围的问题? 最奇怪的部分是,我们有相同的应用程序在具有相同数据库的不同服务器上运行,并且没有遇到此错误。

谢谢!

如果您仅对临时表使用有意义的名称,则本来可以避免这种混乱情况。 我的猜测是由于某种原因您的服务器无法删除其中一个临时表,这就是导致您出错的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM