编辑20210601,作为更新:
这已经被证实是一个bug,几周前我们收到了一封来自支持工程师的电子邮件,说他们已经为Elastic Query实现了新的逻辑(仍在公共预览中),这有这个副作用。解决方法是指定转换(例如nvarchar用于文本等)。对于我们的情况-逻辑已经恢复,所以我们的解决方案在以前受影响的服务器上工作,因为我知道将会有一个新的版本,不会有这个bug。
原问题:
我有3个Azure SQL数据库: A、B和C
数据库C是数据源,数据库A和B具有该数据库的外部表。外部表的定义是相同的。
在过去的几天里,一些事情发生了变化--用于加载数据的查询在数据库A中不再有效。但是,它们仍然在数据库B中工作。
首先,这个查询在两个数据库中都有效:
SELECT * FROM < external table to database C >但是这个查询只适用于数据库B,而不适用于数据库A:
SELECT 'test' FROM < external table to database C >错误消息:
Msg 46836, Level 16, State 2, Line 1
External table schema does not match actual schema from remote table: Mismatch between actual and expected type of column 1 in the remote query result. Expected: VARCHAR, Actual: NVARCHAR在尝试其他数据类型(如datetime )时也会出现同样的错误-它需要datetime2。
因此,我首先尝试转换数据类型,然后它在两个数据库中都有效:
SELECT CAST('test' AS nvarchar(10)) FROM < external table to database C >这仍然不起作用(同样的错误,这很奇怪,因为它说期望varchar):
SELECT CAST('test' AS varchar(10)) FROM < external table to database C >你知道这是什么原因吗?
具体地说,为什么同一查询的数据库之间会有差异?这种变化是如何发生的,我百分之百确定我这边的服务器或数据库的配置没有变化。
发布于 2021-04-26 22:32:30
我在3个Azure数据库中的2个上遇到了同样的问题。
2个有问题的有版本(SELECT @@ version ),即较新的: Microsoft SQL Azure (RTM) - 12.0.2000.8 Apr 19 2021 17:05:18版权所有(C) 2019 Microsoft Corporation
仍然正常工作的版本有: Microsoft SQL Azure (RTM) - 12.0.2000.8 Feb 4 2021 02:12:36版权所有(C) 2019 Microsoft Corporation
你是否可以降级到12.0.2000.8 Feb 4 2021 02:12:36,看看你是否仍然有这个问题?
我认为微软在二月份到四月份之间引入了一个bug。
发布于 2021-05-05 00:46:25
此问题的快速更新。我们遇到这个问题大约有10天了。我们已经联系了Microsoft sql server支持团队,是的。它的100%是微软引入的问题。我被告知这个bug将在1到2个月内修复。
发布于 2021-04-30 18:20:36
这是Azure中的一个错误-通过门户报告它。并不是所有的服务器都有这个问题。
要检查MS是否已为您排序,请运行"DBCC FREEPROCCACHE“,然后重试。
编辑:当使用外部表时,同样的错误也会影响大小写。
https://stackoverflow.com/questions/67226650
复制相似问题