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

Al *_*epp 15 sql sql-server collation

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

更确切地说,我需要Latin1_General_CI_AI,但他们有Czech_CI_AS.在比较捷克语的字符串时,这两者有很大不同(令人惊讶的是,我需要latin1 general,而不是Czech,以获得正确的结果.)

当我尝试更改数据库的排序规则时,服务器抱怨我没有用户权限来执行此操作.我试图联系支持台,但没有运气.我可以帮助自己吗?

我知道可能每个单独的表列都有自己的排序规则,所以也许我应该设置所有的字符串列Latin1_CI_AI.但我不知道该怎么做.我只有SQL访问数据库(不幸的是没有SQL Server Management Studio).

sau*_*672 21

更改数据库的排序规则

ALTER DATABASE MyDataBase COLLATE [NewCollation]
Run Code Online (Sandbox Code Playgroud)

要更改列的排序规则

ALTER TABLE MyTable ALTER COLUMN Column1 [TYPE] COLLATE [NewCollation]
Run Code Online (Sandbox Code Playgroud)

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

  • 也许这些命令是正确的,但它们对我不起作用.第一个说我没有权限这样做,第二个说该列上有一个依赖对象CK_something,因此无法更改排序规则.(这对我没有意义 - 我不明白什么是依赖对象,以及为什么它会阻止整理.) (2认同)