【问题标题】:How to change DEFAULT collation of localdb?如何更改 localdb 的默认排序规则?
【发布时间】:2016-12-14 09:58:58
【问题描述】:

我知道我可以在 localdb 中更改数据库对象的排序规则,但是,我可以更改任何选项来为新创建的对象设置默认排序规则吗?或者更好的是,无论如何要对负责 localdb 实例的 SQL Server 进程说具有与 SQL_Latin1_General_CP1_CI_AS 不同的默认排序规则?

我已经搜索过了,但我发现除了更改已创建数据库的排序规则的令人讨厌的过程之外什么都没有......是否有可能几乎在 2017 年 SQL Server 不提供此选项?

【问题讨论】:

  • 使用 SQL Server Express 来实现完全控制
  • 实体框架允许您指定数据库排序规则、使用迁移脚本、播种等。为什么还要关心默认排序规则?您使用的是varchar 而不是nvarchar
  • 没有默认的数据库排序规则,你说的是服务器的排序规则。您不应该依赖具有特定排序规则的服务器。您应该为数据库/列指定所需的排序规则。数据库的排序规则是在创建时定义的。排序规则也会影响索引和查询。如果 SQL Server 提供您所要求的,它必须重建数据库中的每一个索引。这是一个“如果你不知道怎么做,你就不应该做”的案例

标签: sql-server localdb


【解决方案1】:

来自这个链接:SQL Server 2016 Express LocalDB

LocalDB 的实例排序规则设置为 SQL_Latin1_General_CP1_CI_AS 并且无法更改。正常支持数据库级、列级和表达式级排序规则。

【讨论】:

  • 那么坏消息!这大大缩小了选项范围,因为我无法控制数据库的创建(实体框架可以),所以我无法在之前设置数据库排序规则以在其上创建对象。我不明白为什么微软没有在某个地方显示这个设置......无论如何,谢谢,我没有在文档中找到它!
  • @Vi100 谁说你无法控制? EF 做你告诉它的事情。您可以像使用任何其他数据库一样使用迁移和播种。您可以为任何数据库设置所需的排序规则。为什么还要更改默认/服务器排序规则?
  • @Panagiotis Kanavos - 我需要排序规则与重音无关。我可以使用 EF 设置数据库创建的排序规则吗?我不知道。无论如何,我正在使用 EF Core,所以最有可能的是这是不可能的......
  • @Vi100 你应该在问题和标签中提到这一点。在 EF6 中,您可以覆盖 InitializeDatabase 方法 as shown here。 EF Core 没有策略,因此您可能必须在启动代码中创建数据库。您不必通过 EF 做所有事情
  • @Vi100 default/server 排序规则仅在您针对自己的服务器进行部署时才有意义。在部署到生产环境时,您不能(不应该)确定服务器排序规则。
猜你喜欢
  • 2010-10-19
  • 1970-01-01
  • 2010-09-14
  • 2010-11-10
  • 2018-12-19
  • 2023-03-22
  • 2011-02-19
  • 1970-01-01
相关资源
最近更新 更多