【发布时间】:2012-09-13 03:20:51
【问题描述】:
当我尝试更新一些数据时
if Exists(select * from sys.columns where Name = N'Enabled'
and Object_ID = Object_ID(N'SLBPool'))
begin
update SLBPool set SLBPool.Enabled=1
End
GO
它在 SQL 2012 中显示错误“Invalid column name 'Enabled'”,但是在 2008 R2 中没有发生 怎么来的?
【问题讨论】:
-
错误似乎表明您的
SLBPool表在您的 2012 数据库中没有名为Enabled的列。您绝对确定两个SLBPool表的架构是相同的? -
可能系统视图上的架构发生了变化?排序规则或数据类型也可能有误。
-
有没有可能
Enabled在2012年是保留字,而在2008年不是?例如,您可以将列命名为Values,但您必须始终将其括在括号中,例如[Values]。和[Enabled]一样吗? -
这在 2008 年也应该是一个错误。编译包含此代码的批处理时,将编译 整个 批处理,并且缺少
Enabled列应该始终导致错误。我有兴趣查看一个重现脚本,它实际上可以按您的预期工作。 -
对不起!重新产生错误为时已晚。我已经放下桌子并重新创建了一张新桌子,然后一切顺利。但是,我确定“已启用”列不存在!应该不会在 2012 年显示任何错误。感谢所有回复
标签: sql-server sql-server-2012