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

Sql server 2008 r2 如何更改CRM 2011 SQL数据库的排序规则?,sql-server-2008-r2,dynamics-crm-2011,Sql Server 2008 R2,Dynamics Crm 2011,我有一组CRM 2011数据库,所有这些数据库都安装在运行SQL 2008 R2的同一台SQL server上。其中一个数据库的排序规则为Modern\u Spanish\u Cl\u Al,而其他所有数据库的排序规则都设置为Latin1\u General\u Cl\u Al。我希望所有这些都设置为Latin1,所以我想回去修复西班牙语数据库,使其与其他数据库一样 如何将数据库排序规则从Modern_Spanish_Cl_Al更改为Latin1_General_Cl_Al 我尝试使用UI在数据

我有一组CRM 2011数据库,所有这些数据库都安装在运行SQL 2008 R2的同一台SQL server上。其中一个数据库的排序规则为
Modern\u Spanish\u Cl\u Al
,而其他所有数据库的排序规则都设置为
Latin1\u General\u Cl\u Al
。我希望所有这些都设置为Latin1,所以我想回去修复西班牙语数据库,使其与其他数据库一样

如何将数据库排序规则从
Modern_Spanish_Cl_Al
更改为
Latin1_General_Cl_Al

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

统计信息“TeamBase.fndx\u Sync\u VersionNumber”取决于数据库排序规则。如果绑定到架构的对象依赖于数据库排序规则,则无法更改该排序规则。请删除对数据库排序规则的依赖项,然后重试该操作。

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

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


我在一个测试环境中处理这个问题,所以我愿意进行实验,我意识到如果不破坏CRM,我所尝试的可能是不可能的。

您是否尝试使用正确的排序规则创建一个新的DB

CREATE DATABASE DatabaseName COLLATE Latin1_General_Cl_Al;
然后备份并将不正确排序的数据库还原到新数据库中?
如果可以,您必须使用部署管理器中的导入组织向导,基于新数据库导入新组织

编辑

仔细研究后,似乎很难更改排序规则,即使在执行备份/恢复时也是如此。
如果要更改数据库级别的排序规则,您唯一的选择似乎是

ALTER DATABASE ... COLLATE 
但这只会影响新对象。然后必须使用ALTERTABLE来更改现有的表

此外,由于排序规则指定了数据的排序和存储方式,因此您需要导出所有数据并再次将其导入(例如使用BCP和大容量插入)


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

以前有没有人在CRM 2011数据库中成功地实现了这一点?具体实现了什么?脚本编写和重新创建?通过遵循此答案中概述的过程,更改了CRM 2011 SQL数据库的排序规则。