我的公司的旧系统遇到了问题。该代码是VB6,C#和SQL的组合,其中SQL由粘贴到“ C#”应用程序中的数千行嵌入式SQL组成。创建(并删除)了许多临时表。在代码中找到可以创建或重新使用临时表的位置并不容易(至少可以这样说)。
使用SQL Server 2008 R2运行时,代码的行为符合预期。但是,在运行SQL Server 2014或SQL Server 2016时,会出现错误“数据库中已经有一个名为'#whatever'的对象。”
在SQL Server 2014数据库上,数据库的兼容性级别已设置为SQL Server 2008(100),并且MAX DOP(我怀疑是问题的可能来源)已设置为1。
有人在经历过类似的经历吗?如果是,是否有任何已知的解决方法。该系统已有25年的历史了,我们希望停用该系统,但是有些人只是太喜欢它了。
答案 0 :(得分:1)
答案实际上很有趣而且很简单。开发人员使用了此功能:
data2 3 4 5
问题是>0。在SQL Server 2014中,似乎OBJECT_ID为临时表返回了负值。