【问题标题】:Database collation - Change Impact数据库整理 - 变更影响
【发布时间】:2018-02-18 23:32:07
【问题描述】:

就数据库而言,我真的很弱,所以请多多包涵。 我有一个在 Greek.CI_AI 中的数据库,它与多个应用程序没有任何问题。将数据放入此数据库的所有服务器都位于希腊语环境中。

但是,应用程序会以区分大小写的方式处理其信息并检查完整性约束。到目前为止,我还没有遇到特定应用程序的任何问题,但我担心以后数据会更多并且影响更大时我可能不得不处理它。这样做的正确方法是什么?我的意思是我只是更改它还是应该删除它并使用正确的排序规则重新创建它?如果我不必删除它,这将如何影响数据?

比较两者我没有发现差异。

http://collation-charts.org/mssql/mssql.0408.1253.Greek_CI_AI.html http://collation-charts.org/mssql/mssql.0408.1253.Greek_CS_AI.html

感谢您的帮助!

【问题讨论】:

  • 另外,Greek.CI_AI 和Greek.BIN 有什么区别?

标签: sql-server database collation


【解决方案1】:

您不应将您的数据库排序规则从 Greek_CI_AI 更改为 Greek_CS_AI/BIN。 如果您的应用程序以区分大小写的方式检查完整性约束,这仅意味着您的业务规则需要这种方法,并且这种区分大小写是直接在这些约束中实现的。

如果您将数据库排序规则更改为 Greek_CS_AI,您可以破坏应用程序代码。如果您的数据库中现在有表Table1Table2,所有代码都可以将它们引用为table1table2,但是一旦您的数据库排序规则变得区分大小写,对象table1table2 将找不到。

另外,Greek.CI_AI 和 Greek.BIN 有什么区别

要通过您的眼睛查看此内容,请尝试对您的数据进行一些选择,将 ORDER BY col1 COLLATE Greek_CS_AI --Greek_CS_BIN 添加到您的 SELECT 语句中

您会发现,在第一种情况下,您的大写/小写字母将彼此相邻放置,但在同一个字母中,小写总是在大写之前,而在第二种(BIN)情况下,所有大写字母都将在所有小写之前像这样的字母:

这是因为BIN 排序规则根据它们的 ascii 代码比较字符。

请注意,BIN 排序规则中存在一个错误,它仅正确比较字符串的第一个字符,因此,如果您需要使用二进制排序规则,请始终使用没有错误的 BIN2 排序规则

【讨论】:

    猜你喜欢
    • 2012-04-28
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 2022-06-10
    • 2016-04-28
    相关资源
    最近更新 更多