SQL Server 2008排序规则冲突问题的通用解决方案

时间:2014-12-11 15:18:18

标签: sql-server-2008 collation

我们已将SQL Server 2000 DB迁移到SQL Server 2008.迁移后,我们面临着500个存储过程的排序规则不匹配问题。我可以理解由于DB的不同校对级别而出现问题。可以通过修改500 SP或更改DB的校对级别来解决。但我无法承受任何一种解决方案。这个问题有没有通用的解决方案?

1 个答案:

答案 0 :(得分:0)

如果通过备份并恢复数据库来迁移数据库,它将保持其排序规则以及它包含的所有对象的排序规则,这样,如果对所有数据库执行此操作,本身不会导致问题。如果您通过脚本对象进行迁移并复制数据,那么您可能会遇到问题 - 所以不要这样做,否则请务必检查选项"脚本排序"当你使用" Generate Scripts"任务(这是在#34;设置脚本选项 - >高级"在我的Management Studio版本中)。

即使您所有数据库上的排序规则都正确,您仍然可能与系统数据库发生冲突,而这又可以通过更改服务器排序规则来解决,可以通过the procedure described in the MSDN或(更简单,更安全)重新安装SQL Server并选择适当的排序规则,使用与使用的SQL Server 2000实例相同的排序规则。

如果您无法更改服务器排序规则或您不愿意(因为2008 支持的较新排序规则更好),另一个选项是更改排序规则数据库给出了冲突。在这种情况下,您希望通过编写数据库脚本并复制数据来进行迁移,这次确保脚本排序规则,以便数据库以服务器默认排序规则结束

在所有情况下,更改服务器或数据库排序规则都不会影响现有对象。只有新创建的对象(和重建的对象)才会以新的排序规则结束。事后改变整理是一项相当大的工作,如果可能的话你想避免,但是this article描述了如果必要的话如何去做。