如何更改CRM 2011 SQL数据库的排序规则?

时间:2013-04-04 21:29:51

标签: sql-server-2008-r2 dynamics-crm-2011

我有一组CRM 2011数据库,所有这些数据库都安装在运行SQL 2008 R2的同一SQL服务器上。其中一个数据库的归类为Modern_Spanish_Cl_Al,而其他所有数据库都设置为Latin1_General_Cl_Al。我希望所有这些都设置为Latin1,所以我想回去修复西班牙语数据库,就像其他人一样。

如何将数据库归类从Modern_Spanish_Cl_Al更改为Latin1_General_Cl_Al

我尝试使用UI在数据库级别执行此操作,但我收到了一百万个错误,如:

统计信息'TeamBase.fndx_Sync_VersionNumber'依赖于数据库排序规则。如果架构绑定对象依赖于它,则无法更改数据库排序规则。删除数据库排序规则的依赖关系,然后重试该操作。

我尝试使用UI时进入列级别,但收到了不同的错误消息:

不允许保存更改。您所做的更改需要删除并重新创建以下表格

我在测试环境中处理这个问题,所以我愿意进行实验,并且我意识到如果不破坏CRM,我可能无法实现的目标。

1 个答案:

答案 0 :(得分:1)

您是否尝试使用正确的排序规则创建新数据库

CREATE DATABASE DatabaseName COLLATE Latin1_General_Cl_Al;

然后将您的数据库备份 - 恢复到错误的归类到新的数据库中? 如果这样做,则必须使用Deployment Manager中的“导入组织向导”,基于新数据库导入新组织。

修改

在研究之后,即使在进行备份/恢复时,也很难改变整理 如果要更改数据库级别的排序规则,唯一的选择似乎是

ALTER DATABASE ... COLLATE 

但这只会影响新对象。然后,您必须使用ALTER TABLE来更改现有表。

此外,由于排序规则指定了数据的排序和存储方式,因此您需要导出所有数据并将其重新输入(例如,使用BCP和BULK INSERT)。

要添加到此列,列的某些属性会阻止其排序规则更改(例如某些约束和模式绑定函数引用)。如果您确实想要更改整个数据库的排序规则,最简单的方法可能是编写数据库脚本并使用正确的排序规则创建新数据,然后将数据重新排列到新数据库中。