【问题标题】:what are the possible Impact of changing column collate in sql server?在 sql server 中更改列排序规则可能会产生什么影响?
【发布时间】:2017-02-12 10:34:45
【问题描述】:

我使用的是 MSSQL 2012,

为了处理通过 LINQ 搜索的特殊字符,我发现将列的 COLLATE 更改为 *_CI_AI,但在更改之前我想知道它的影响和影响。

【问题讨论】:

  • 嗨,这个问题解决了吗?您需要进一步的帮助吗?
  • @Shnugo:已经解决了,但我想知道它的影响。
  • 我添加了一个列表...
  • 排序规则对于您的目的来说是正确的,或者是不正确的。除了“数据库从不正确变为正确”之外,您到底在寻找什么?
  • @Damien_The_Unbeliever 排序规则是正确的,对我有用,但我想要的是会影响任何其他查询吗?

标签: sql-server database linq tsql


【解决方案1】:

这可能不是那么容易......

如果此列参与索引和约束,您将不得不删除它们,更改排序规则并重新创建它们。

排序规则的一个非常痛苦的一点是,temp-db 使用 - 默认情况下 - 服务器实例的默认排序规则。我们曾经有一个项目,在这样的步骤之后,某些语句出现了错误。这发生在存储过程创建#table' and used such a column in any kind of comparison (in WHEREorJOIN`-predicat) 时。

可以在任何语句中手动键入排序规则,这样就有可能让事情正常进行,但工作量可能很大...

一些相关的答案:

如果影响/影响更新列表

  • 排序可能会改变(排序后的列表可能会以不同的顺序出现)
  • _CI_AI 的比较限制较少。 “彼得”等式。到“彼得”。有时这是可以的(实际上大部分时间),但并非总是如此(想象一个密码)。在“Pétè”应该与“Pete”相同的情况下,这有助于...
  • 基于字符串的连接可能会以不同的方式连接(如果 ProductCode "aBx5" 与 "ABx5" 的代码不同)
  • 检查约束可能限制较少(您强制使用值“A”、“B”或“C”,然后突然插入“a”、“b”和“c”...)
  • 您可能会遇到与临时表相关的排序错误(这可能很烦人!)。这可能会破坏现有代码...

对于简单的文本列,这应该不是问题...

【讨论】:

  • 谢谢,明白了,跟踪更改将很有用。 #happycoding
猜你喜欢
  • 2016-06-09
  • 2016-03-07
  • 2011-09-02
  • 2011-03-28
  • 2016-11-17
  • 2015-04-03
  • 2012-08-29
  • 2011-04-08
  • 1970-01-01
相关资源
最近更新 更多