一尘不染

如何使用SQL设置列的排序规则?

sql

最初,我是在本地计算机上创建SQL
Server数据库的。我设置了它的排序规则,Latin1_General_CI_AI并且一切正常。当我将完成的工作移至Web托管SQL
Server时,我遇到了问题:它们使用了不同的数据库排序规则。那我现在该怎么办?

更具体地说,我需要Latin1_General_CI_AI,但是他们有Czech_CI_AS。在比较捷克语的字符串时,这两者之间存在显着差异(令人惊讶的是,我需要使用latin1
general,而不是Czech,才能获得正确的结果。)

当我尝试更改数据库的排序规则时,服务器抱怨我没有用户权限。我试图与支持台联系,但没有运气。我可以自助吗?

我知道每个表格列都可以有自己的排序规则,所以我应该将所有字符串列都设置为Latin1_CI_AI。但是我不知道该怎么做。我只有对数据库的SQL访问权限(不幸的是,没有SQL
Server Management Studio)。


阅读 137

收藏
2021-03-17

共1个答案

一尘不染

更改数据库的排序规则

ALTER DATABASE MyDataBase COLLATE [NewCollation]

更改列的排序规则

ALTER TABLE MyTable ALTER COLUMN Column1 [TYPE] COLLATE [NewCollation]

但是,何时可以执行此操作有很多限制,非常值得注意的是,如果在任何索引中使用该列,则将被拒绝。
在某些情况下,您可以在SSMS中做更多的事情。
语法文档列出了限制:

2021-03-17