ewa*_*all 14 sql-server collation
我们正在使用默认排序规则"Latin1_General_CI_AS"将数据库从旧的SQL Server 2k EE服务器迁移到具有默认排序规则"SQL_Latin1_General_CP1_CI_AS"的新SQL Server 2005和2008服务器上.没有国际字符需要我所知道的Unicode,所以这两个代码页实际上几乎相同.
主要的SQL Server DBA坚持认为,每个数据库(大多数是由第三方应用程序构建的)必须使用新的排序规则重建,然后才能迁移它们.
我知道自从SQL Server 2000以来,可以将各个数据库设置为具有与默认值不同的排序规则.但是使用混合排序运行会产生什么样的真正后果? 例如,微软的一篇文章提出了共享tempdb的并发症(但是可以轻松避免吗?).
而且,或许更重要的是,如果我们确实需要在新服务器上支持多个排序规则,我们可以采取哪些措施来避免这些问题?
Mik*_*son 12
服务器和数据库之间的不同排序规则的问题如前所述,临时表将默认使用服务器排序规则创建.这将使临时表和常规表之间的字符字段的任何比较失败.通过将COLLATE database_default用于临时表的字符字段,第三方应用程序的开发人员可以避免这种情况.
create table #Tmp(Col1 nvarchar(50) COLLATE database_default)
Run Code Online (Sandbox Code Playgroud)
我来自"其他"方面.我不是DBA,而是第三方软件开发人员,我认为构建我的应用程序以在数据库和服务器之间的排序规则不同的环境中工作是我的责任.我的责任是我的应用程序将使用区分大小写的排序规则.
好吧不是最好的答案,但是
你问道:"使用不同的校对运行会产生什么样的真正后果"这可能是一件令人头疼的问题.你在微软提到的这篇文章指出了它.根据我的个人经验,我遇到过这个问题并且不容易避免.除非您测试得好,否则不合格的排序将会出现在计划外的地方.
您还问过"如果我们确实需要在新服务器上支持多个排序规则,我们可以采取哪些措施来避免这些问题?" 没有什么可以想到的,除了疯狂地测试.
我真的希望你好运,这可能是一个普通的毛茸茸的问题,我不希望任何人.
| 归档时间: |
|
| 查看次数: |
18944 次 |
| 最近记录: |