数据库整理 - 更改影响

时间:2017-09-10 17:31:43

标签: sql-server database collation

就数据库而言,我真的很弱,请耐心等待。 我有一个在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

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

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

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

  

另外,Greek.CI_AI和Greek.BIN

之间有什么区别

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

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

enter image description here

这是因为SELECT校对根据其ascii代码比较字符。

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