【问题标题】:SQL Server Collation InheritenceSQL Server 排序规则继承
【发布时间】:2017-03-19 21:11:24
【问题描述】:

我已将 Umbraco 安装到我的 ASP.NET MVC 项目中,并且在安装过程中要求提供数据库信息并成功生成目录。

我正在使用一个共享服务器,它的实例级排序规则为Turkish_CI_AS。当我尝试一些配置时,我遇到了一个错误:

In Umbraco, while tried to listing users the exception I've encountered.

所以我列出了表格的排序规则设置,所以我发现除了 nvarchar / varchar 列之外,所有列的排序规则都是 NULL。

所以在umbracoUsers(即用户表有一个列'id')

Information of users' table

我还通过其源代码检查了 Umbraco DB 生成器脚本,并且在所有脚本中都没有像“排序规则”这样的词。

如何将所有为 NULL 的列排序规则更改为实例默认排序规则?

任何想法都会受到赞赏。请不要犹豫:)

问候。

【问题讨论】:

  • 排序规则适用于字符串列 - datetimeint 列的排序规则为 NULL,因为 排序规则对于那些类型的列
  • 但是在 Umbraco 框架中,一些带有 where 子句的查询包括这些 INT 列和一些带有“id”的查询和其他带有“Id”的查询,这会导致问题。但是可以像“用户名”或“用户名”一样查询诸如用户名之类的 nvarchar 列。我需要这种灵活性。仅仅因为 Umbraco 使用愚蠢的查询将行动变为行动。
  • SQL Server 中的INT不能有排序规则。
  • 那么我该如何解决这个问题呢?如何使整数列名不区分大小写?

标签: sql-server collation


【解决方案1】:

我找到了解决此问题的方法。出于某种原因,我不知道,但是如果您定义实例/数据库级别排序规则土耳其语_CI_AS,则此损坏的列名不区分大小写。如果你真的必须使用Turkish_CI_AS 作为排序规则(就像我一样)用这个排序规则创建数据库(所以让表使用这个排序规则)然后用Latin1_General_100_CI_AS 改变DATABASE 的排序规则。 (也许其他排序规则也可以)

此解决方法提供表的排序规则仍然是土耳其语_CI_AS,并且将解决基于列名的区分大小写问题。

感谢您的回答。

【讨论】:

    猜你喜欢
    • 2011-05-05
    • 2012-06-08
    • 2010-10-07
    • 2020-12-16
    • 2012-01-21
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多