Azure SQL口音敏感对象名称

问题描述

我们有一个本地数据库,我们希望使用数据迁移助手将其上传到Azure。 我们的数据库使用排序规则SQL_Latin1_General_CP1_CI_AI。我们在某些表和列名称中使用重音符号。在SSMS中编写查询时,如果我们省略表名中的重音符号,它仍然可以使用,但是在Azure上会出现错误。有没有一种方法可以将Azure SQL配置为对对象名称不区分重音,而对文本数据仍然不区分重音?

例如,如果我有一个名为[Paramètres]的表,然后执行以下语句

SELECT * 
FROM [Parametres]

它可在SSMS中使用,但不适用于Azure。我收到“无效的对象名称”错误

解决方法

区分重音/不区分重音取决于数据库排序规则。 SQL Server中的归类为数据提供排序规则,大小写和重音敏感性属性。

请参考:Collation and Unicode support

您可以运行以下查询检查排序规则是否区分重音:

IF 'a' = 'á' COLLATE SQL_Latin1_General_CP1_CI_AI
SELECT 'Values are the same'
ELSE
SELECT 'Values are different'

AS 区分重音,而 AI 不区分重音。例如,您的本地数据库归类为SQL_Latin1_General_CP1_CI_AI,并且对重音不敏感。

请运行以下查询以检查您的Azure SQL数据库排序规则:

SELECT CONVERT (varchar,SERVERPROPERTY('collation')) AS 'Server Collation';

创建Azure SQL数据库后,我们无法更改其排序规则。因此,无法将Azure SQL配置为不区分重音。

建议不要通过DMA将本地数据库迁移到现有的Azure SQL数据库。请使用导入DACPAC或SSMS:将数据库部署到Azure SQL数据库: enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...