Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 重复的列名。。。但前提是数据库不区分大小写_Sql_Collation_Linked Server - Fatal编程技术网

Sql 重复的列名。。。但前提是数据库不区分大小写

Sql 重复的列名。。。但前提是数据库不区分大小写,sql,collation,linked-server,Sql,Collation,Linked Server,我试图从链接的服务器连接查询具有区分大小写排序规则的数据库上的视图。另外需要注意的是,我试图查询的视图基本上是三个索引视图的包装器 我得到的错误是: 通过OPENQUERY和OPENROWSET获得的结果集中不允许有重复的列名。列名“ExtPrice”是重复的 在视图中,我有EXTPRICE和EXTPRICE。当我直接从服务器查询此视图时,我没有任何问题。。。但是当我试图通过链接服务器使用查询时,我得到了上面的错误 这是一个排序问题吗 如何通过链接服务器使用此视图,并使查询理解该视图区分大小写

我试图从链接的服务器连接查询具有区分大小写排序规则的数据库上的视图。另外需要注意的是,我试图查询的视图基本上是三个索引视图的包装器

我得到的错误是:

通过OPENQUERY和OPENROWSET获得的结果集中不允许有重复的列名。列名“ExtPrice”是重复的

在视图中,我有
EXTPRICE
EXTPRICE
。当我直接从服务器查询此视图时,我没有任何问题。。。但是当我试图通过链接服务器使用查询时,我得到了上面的错误

  • 这是一个排序问题吗
  • 如何通过链接服务器使用此视图,并使查询理解该视图区分大小写

如果这是一个愚蠢的问题,我提前道歉。

您的列名需要更改。如果ENTRYDATE列是文本,ENTRYDATE是日期数据类型,则将ENTRYDATE更改为ENTRYDATE_text。或者将EntryDate更改为EntryDate。即使你能让链接服务器视图满意,未来的开发人员使用它也会浪费时间,可能会引入错误,因为它非常不清楚。

是的,这是对视图所在的服务器进行区分大小写排序的结果

这就是为什么我总是抱怨直接在服务器级别使用区分大小写的排序规则(而不仅仅是在列级别使用排序规则),正如我在这里指出的:

只是,当我试图思考如何将COLLATE子句塞进分布式查询时,我认为必须有更好的方法

而且,看起来您可以将一些特定选项设置为链接服务器定义的一部分: 这定义了在分布式查询中使用排序规则时如何指定排序规则选项

然而,问题是,您需要使用链接服务器,而不是允许临时分布式查询(但无论如何,这是一个安全风险/问题)。所以我建议使用链接服务器作为更好的方法

请尝试此链接-它提供了有关如何控制链接服务器上排序规则设置的详细信息:

当然,如果可能的话,我建议更改列名


--Mike

你到底为什么要同时拥有
EXTPRICE
EXTPRICE
?这是从供应商数据库中提取的数据。其想法是添加更好的数据类型,但仍然表示字段的内容是相同的。因此,供应商数据库中的一个日期称为ENTRYDATE,它存储为varchar(8)。。。在引用该表的视图中,该字段将被称为EntryDate(在pascal情况下),它实际上是一个日期。我尝试将视图模型应用到表中,只是添加了更好的数据,因为我对这个供应商数据库还很陌生,不完全理解他们为什么要这么做。现在将抽象视图名称改为
v_ExtPrice
是否太晚了?嗯。。。我认为这将是痛苦的,因为很多事情都会触动这一观点。但这是可以做到的。。。只是不期待它。这将比继续保持当前设计的痛苦少,相信我:)