【问题标题】:Linked server reference "Invalid Column Name"链接服务器参考“无效的列名”
【发布时间】:2015-12-05 23:19:03
【问题描述】:

在 SSMS 2012 中,我在 SERVERA 到 SERVERB 中创建了一个链接服务器,我已使用四部分引用成功地将查询写入 DBB 数据库中的多个表。

当我尝试使用简单的 select 语句引用“DBB”数据库中的“Charge”表时:

SELECT * FROM [SERVERB].[DBB].dbo.Charge

我收到以下消息:

消息 207,级别 16,状态 1,第 1 行无效的列名称“charge_type”。

此列作为“Charge_Type”存在于 DBB 数据库中,但是,SERVERB 的排序规则不区分大小写,而 SERVERA 的排序规则区分大小写(我相信这就是我的问题所在)。

有人遇到过这个问题吗?

【问题讨论】:

  • 有趣。您可以选择单个列而不是 * 吗?该表上有任何计算列吗?这是一张桌子而不是一个视图,对吧?
  • @Blorgbeard 即使我指定了一个单数列,我仍然会收到相同的消息。这是一张表,我不相信有任何计算列。
  • 应该说SERVERA是2012,SERVERB是2008 R2,Charge_Type列是tinyint数据类型。
  • @FutbolFan 感谢您的回复。我有点理解排序规则问题。有办法解决吗?

标签: sql ssms ssms-2012


【解决方案1】:

(对于可能会在这里结束的人)

您可以随时更改排序规则。在这种情况下,您必须在选择查询中写入列名。我的意思是, 而不是像这样写查询:

SELECT * FROM [SERVERB].[DBB].dbo.Charge

这样写查询:

SELECT Charge_Col1, Charge_Col2, Charge_Type COLLATE Latin1_General_CI_AS FROM [SERVERB].[DBB].dbo.Charge

还有一个类似的帖子:how we can select two columns having different collation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2012-08-04
    • 2020-05-19
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    相关资源
    最近更新 更多