编辑:请先阅读我的答案,然后再决定阅读并尝试理解下面的文本。当你看到发生了什么时,你可能不会觉得它是值得的;)SQL Server无效列名称错误抱怨列已久
我有一个奇怪的问题:SQL Server 2008 R2不断抱怨一个无效的列,确实不存在了,但我没有使用它要么!
我无法从我自己的应用程序中更新该表中的任何行,在该应用程序中不能找到对该列的引用,因为现在我总是遇到此错误。 然后我想直接在SSMS中作为一个测试进行更新,但是当我在那里编辑行时,我仍然得到这个错误。
以前发生了什么:我创建了一个名为CertcUL varchar(1)的列,并且工作正常。过了一段时间后,我需要它是一个varchar(30),所以我编辑了表格设计并将它变成了一个varchar(30)。
从那一刻起,我看到我只能在存储1个字符时更新此列。当我尝试存储更多的时候,我收到了一个错误,警告我关于字符串或二进制截断。所以不知何故,前面的varchar(1)信息仍然存在于数据库中。
当我将该列重命名为CertcUL2或Cert_cUL时,仍然发生同样的事情!所以改变列名不会改变根本原因。另外,当试图在SSMS中直接添加一些字符时。
当我删除列,并立即添加一个新的与varchar(30),并称为'测试',同样的问题仍然存在!本专栏仍然只允许我存储一个字符!该列是最后一列。使它成为最后一栏也没有帮助。只有在保留另一列的同时创建新列时,我才可以使列的行为正确。
因此,不管怎样,SQL Server都会保存一些有关列的元数据,即使它已被删除。并没有看名字,而是按照创建列的顺序。
有没有人有一个想法如何发生这种情况,除了(可能)删除和重新创建整个表,我怎么能解决这个问题?
谢谢!