Bre*_*ias 15 sql-server installation collation internationalization
我今晚花了很多时间试图找到关于在我的SQL Server 2008 R2安装中应用哪种校对选择的指导,但几乎所有在线的内容基本上都是"选择适合你的东西". 非常无益.
我的背景是新的应用程序开发.我并不担心与以前版本的SQL Server(即<= 2005)的向后兼容性.我对存储来自全球各地的语言的数据非常感兴趣 - 而不仅仅是拉丁语.我在网上找到的帮助很少,这表明我应该避免所有"SQL_"排序规则.这缩小了我选择使用基于Windows语言环境的二进制或"非二进制"排序规则.
如果我使用二进制文件,我会收集我应该使用"BIN2".所以这是我的问题.如何确定是应该使用BIN2还是仅使用"Latin1_General_100_XX_XX_XX"?我的蜘蛛感觉告诉我BIN2将提供"不太准确"的校对,但对所有语言都更通用(并且速度快!).我还怀疑二进制排序规则区分大小写,区分重音和假名敏感(是吗?).相反,我怀疑非二进制排序规则对拉丁语言最有效.
该文档不支持我上述的声明,我正在做出有根据的猜测.但这是问题所在!为什么在线文档如此之薄以至于选择留给猜测?甚至书"SQL Server 2008 Internals"也讨论了各种选择,但没有解释为什么以及何时选择二进制排序规则(与非二进制窗口排序规则相比).Criminy!
“SQL Server 2008 Internals”对这个话题进行了很好的讨论,恕我直言。
二进制整理很棘手,如果你打算支持人类文本搜索,你最好选择非二进制。如果您已经调整了其他所有内容(架构优先),并且在需要区分大小写和重音的情况下(例如密码哈希),二进制可以很好地获得一点性能。二进制整理实际上“更精确”,因为它不考虑相似的文本。不过,您从那里获得的排序顺序仅适用于机器。
SQL_* 排序规则和本机 Windows 排序规则之间只有细微的差别。如果您不受兼容性的限制,请选择原生的,因为它们是前进的方向。
排序规则决定排序顺序和相等性。您选择最适合您的用户的方式。据了解,您将使用 unicode 类型(如 nvarchar)作为您的数据来支持国际文本。排序规则会影响可以存储在非 unicode 列中的内容,这不会影响您。
真正重要的是避免在 WHERE 子句中混合排序规则,因为那是您通过不使用索引来支付罚款的地方。Afaik 没有支持所有语言的灵丹妙药。您可以为大多数用户选择一个,也可以为每种语言使用不同的列进行本地化支持。
一件重要的事情是让服务器归类与数据库归类相同。如果您计划使用临时表作为临时表,如果使用“CREATE TABLE #ttt ...”创建,它将使您的生活更轻松,并且您将遇到需要解决的排序规则冲突指定显式排序规则。这也会影响性能。
归档时间: |
|
查看次数: |
4669 次 |
最近记录: |