Azure Synapse Analytics 无服务器 SQL 池的 Microsoft 数据库项目中的排序规则冲突

问题描述 投票:0回答:1

我正在 Synapse Azure 中从事 Lakehouse 项目。我创建了一个带有排序规则 Latin1_General_100_BIN2_UTF8 的无服务器 SQL 池。 Microsoft 建议对 parquet 和 Delta 表使用此排序规则,请参阅 MS Doc Azure Synapse Analytics 中无服务器 SQL 池的最佳实践

主数据库的排序规则默认为SQL_Latin1_General_CP1_CI_AS

我已在 Visual Studio 2022(版本 17.8.5)中创建了一个数据库项目用于部署目的。我进行了所需的设置,例如将目标平台设置为“Azure Synapse Analytics Serverless SQL Pool”以及“数据库设置”下的排序规则“Latin1_General_100_BIN2_UTF8”。

当我运行架构比较时,我收到以下错误:

在源模型填充期间捕获意外异常:不能 解决“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突 和 UNION 操作中的“Latin1_General_100_BIN2_UTF8”。

然后,我尝试将架构与Azure Data Studio进行比较,我得到了相同的异常。

我不想使用主数据库的默认排序规则。我不确定这是否是一个错误,因为数据库项目考虑的是主数据库而不是目标数据库的排序规则,或者我是否缺少一些其他配置。

visual-studio azure-sql-database azure-synapse database-project sql-server-collation
1个回答
0
投票

您可以使用以下语法检查当前排序规则,以检查排序规则 Latin1_General_100_BIN2_UTF8 是否应用于您正在使用的数据库:

SELECT DATABASEPROPERTYEX('db02', 'Collation') AS Collation;

当给定“Collation”作为属性参数时,DatabasePropertyEx函数将检索指定数据库的当前排序规则设置。

要修改无服务器 SQL 池数据库的默认排序规则,您可以使用

ALTER DATABASE
语句。例如:

ALTER DATABASE db02 COLLATE Latin1_General_100_BIN2_UTF8

结果:

enter image description here

参考: SO 线程 如何更改 Synapse 无服务器数据库中的排序规则

Azure Synapse Analytics 中 Synapse SQL 的数据库排序规则支持

© www.soinside.com 2019 - 2024. All rights reserved.