gpt4 book ai didi

sql - Azure SQL - 将列添加到外部表上的查询时出现奇怪的错误

转载 作者:行者123 更新时间:2023-12-02 02:15:29 24 4
gpt4 key购买 nike

编辑 20210601,作为更新:

这已被证实是一个错误,几周前我们收到了一封来自支持工程师的电子邮件,称他们已经为 Elastic Query 实现了新逻辑(仍处于公共(public)预览版),这会产生副作用。解决方法是指定转换(例如 nvarchar 表示文本等)。对于我们的情况 - 逻辑已恢复,因此我们的解决方案可以在之前受影响的服务器上运行,据我所知,将会有一个新版本不会有此错误。

原始问题:

我有 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

尝试其他数据类型(例如日期时间)时出现同样的错误 - 它需要 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 >

有什么想法导致这种情况吗?

具体来说,为什么同一查询的数据库之间存在差异?这种变化是如何发生的,我 100% 确定我这边的服务器或数据库配置没有发生任何变化。

最佳答案

我在 3 个 Azure 数据库中有 2 个遇到了同样的问题。

引起问题的两个版本有版本(SELECT @@VERSION),即较新的版本:Microsoft SQL Azure (RTM) - 12.0.2000.8 2021 年 4 月 19 日 17:05:18 版权所有 (C) 2019 Microsoft Corporation

仍然可以正常工作的版本是:Microsoft SQL Azure (RTM) - 12.0.2000.8 2021 年 2 月 4 日 02:12:36 版权所有 (C) 2019 Microsoft Corporation

您是否可以降级到 12.0.2000.8 Feb 4 2021 02:12:36 看看问题是否仍然存在?

我认为 Microsoft 在 2 月到 4 月之间引入了与此相关的错误。

关于sql - Azure SQL - 将列添加到外部表上的查询时出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67226650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com