问题描述
我们有一个本地数据库,我们希望使用数据迁移助手将其上传到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数据库: