【发布时间】:2016-09-19 21:21:11
【问题描述】:
我有一个带有简单合并语句的查询来更新或插入表中的数据:
MERGE INTO table_name AS TARGET
USING (
VALUES (
:a0
,:b0
,:c0
)...
) AS SOURCE(A, B, C)
ON SOURCE.B = TARGET.B
AND SOURCE.C = TARGET.C
WHEN NOT MATCHED
THEN
INSERT (
A
,B
,C
)
VALUES (
SOURCE.A
,SOURCE.B
,SOURCE.C
);
此表在两列上有一个非聚集索引,用于唯一性约束。 此查询在 Azure 中的“业务”数据库上运行良好。在“S2”数据库上迁移到 SQL V12 后,当我尝试合并大量条目时会发生此错误:
带有消息“SQLSTATE[42000]”的未捕获异常“PDOException”:[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]无法批量加载。批量数据流被错误地指定为已排序或数据违反了目标表施加的唯一性约束。以下两行排序顺序不正确:第一行主键:(A,B,C),第二行主键:(A,D,E)。
微软似乎知道这个问题:https://support.microsoft.com/en-us/kb/3055799。
但在 Azure 中,我无法更新 SQL Server。我怎样才能让它工作?
【问题讨论】:
-
“SQL Server V12”是什么意思? SQL Server 2012(内部版本号为 11.0)?还是您的意思是 SQL Server 2014(内部版本号为 12.0)??
-
在 Azure 门户中,我只能看到“V12”。 “商业”和“网络”服务计划是“V2”版本。如果我执行“SELECT @@VERSION AS 'SQL Server Version';”在数据库上,我得到这个“Microsoft SQL Azure (RTM) - 12.0.2000.8”。所以,它是一个 SQL Server 2014。
标签: sql-server azure azure-sql-database