正如上面的问题所述,我需要将排序规则从
SQL_Latin1_General_CP1_CI_AS
更改为 Latin1_General_100_CI_AS_SC_UTF8
。
我已经能够通过搜索测试 8g db 来实现 bacpac 方法解决方案。但是,我们有一个 500g 的产品数据库,因此不可能出现此停机,因为我们估计可能需要 24-48 小时才能正常完成。有什么方法可以在不使用 bacpac 的情况下做到这一点?这有点令人沮丧,因为 MsSQL 允许下面这样做:
ALTER DATABASE xxxxxx SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE xxxxxx COLLATE Latin1_General_100_CI_AS_SC_UTF8
ALTER DATABASE xxxxxx SET MULTI_USER;
如果有人有任何事情 - 我唯一的想法是如果可能的话以某种方式在 Azure 中使用复制,但不太了解是否要走这条路
根据 MS 文档
您无法更改或设置 Azure SQL 数据库上的逻辑服务器排序规则,但可以为数据和目录配置每个数据库的排序规则。目录排序规则确定系统元数据(例如对象标识符)的排序规则。当您在 Azure 门户中创建数据库、在 T-SQL 中使用CREATE DATABASE、在 PowerShell 中使用New-AzSqlDatabase时,可以独立指定这两种排序规则。
更改现有数据库排序规则的唯一方法是使用 BACPAC 文件作为解决方法。 Azure SQL 数据库不支持您提供的
ALTER DATABASE COLLATE
语句。
为了减少停机时间,您需要复制数据库并更改其排序规则并恢复它并再次将其重命名为以前的名称,您可以按照@Mousa Janini 给出的以下方法进行操作:
欲了解详细信息请参阅此文档