SQL Server在服务器之间插入或查询会忽略表中以数字开头的列?

时间:2011-04-15 17:01:58

标签: sql-server

我正在尝试在具有相同表的两个服务器之间进行查询(对两个服务器使用相同的create语句)。当我尝试将服务器A的结果插入服务器B时,我收到一个错误,指示“列名或提供的值的数量与表定义不匹配。

在服务器A上运行查询

Insert into ServerB.Database1.dbo.Table1
Select *
from Table1

错误很明显,但不清楚的是它产生的原因。这两个表的定义是相同的。我最终能够分离的是一个以数字值开头的表名不被识别。

当我在ServerA上运行时:

Select *
from ServerB.Database1.dbo.Table1

具有数值的字段未显示在查询的结果集中。短期修复是重命名数据库中的字段,但为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

我对整理很感兴趣,但实际上答案是将对象名称包装在方括号中。即SELECT [1col],[2col],[etc] FROM [1database]。[2owner]。[3table]。这样SQL就可以将每个识别为对象名而不是函数。

要记住的另一件事是不要在select语句中使用splat(*),这有潜在的问题。例如,如果ServerA的table1结构发生变化且ServerB的表格保持不变,则可能会在Insert中遇到错误。