代码之家  ›  专栏  ›  技术社区  ›  xorpower

如何删除SQL Server 2008中的区分大小写检查?

  •  8
  • xorpower  · 技术社区  · 14 年前

    我刚刚安装了SQL Server 2008,并导入了AdventureWorksDatabase(对于SQL 2005,对于2008,它不起作用)。

    当我搜索任何表、视图等时,它现在强制要求区分大小写 因此,当写入person.contact表时,会引发列名称无效的错误,但当写入person.contact时,它会显示所有行。

    另外,智能感知也不太管用。

    2 回复  |  直到 9 年前
        1
  •  12
  •   marc_s HarisH Sharma    14 年前

    区分大小写由数据库使用的排序规则控制-通过查询系统目录视图来检查:

    select name, collation_name 
    from sys.databases
    

    排序规则名称类似于: Latin1_General_CI_AS

    这个 _CI_ 部分是告诉我这是一个 不区分大小写 校对。如果你看到一个 _CS_ 然后是一个 区分大小写 校对。

    可以使用以下命令更改数据库的默认排序规则:

    ALTER DATABASE AdventureWorks COLLATE ....... 
    

    在这里选择任何有效的排序规则-使用一个 海西 获取不区分大小写的排序规则。

    问题是:即使更改了数据库级别的排序规则,某些表可能仍然具有在创建表时定义了特定排序规则的单个列。你也可以改变所有这些,但这将是一项更大的事业。见 this article 有关详细信息和脚本,请检查并可能更改表中的各个列。

    IntelliSense可能无法正常工作的原因是,数据库对象本身的大小写敏感度由服务器排序规则控制,这可能与任何数据库默认值都不同。

    要查找服务器的排序规则,请使用:

    SELECT SERVERPROPERTY('Collation')
    

    更改服务器的系统排序规则是一个非常混乱的过程,需要使用原始的 setup.exe 作为 explained here .

        2
  •  2
  •   Sathiya Kumar V M    9 年前

    这里的问题是表名联系人的区分大小写。您应该将数据库AdventureWorks的 排序规则名称设置为 latin1_general_ci_as

    检查排序规则名称:

    选择名称,排序规则名称
    从sys.databases
    其中name='AdventureWorks';
    去
    < /代码> 
    
    

    如果collation_namelatin1_general_binlatin1_general_cs_as将其更改为latin1_general_ci_as

    修改数据库AdventureWorks 将拉丁裔将军比作; 去 < /代码>

    如果数据库已锁定以执行此操作,则无法以独占方式锁定数据库以执行该操作。“。将数据库更改为单用户

    alter database adventureworks set single_user with rollback immediate
    < /代码> 
    
    

    并做

    修改数据库AdventureWorks 将拉丁裔将军比作; 去 < /代码>

    最终将数据库还原为多用户

    alter database adventureworks set multi-user with rollback immediate
    < /代码> 
    
    

    您可以在数据库属性中更改排序规则。

    检查排序规则名称:

    SELECT name, collation_name
    FROM sys.databases
    WHERE name = 'AdventureWorks';
    GO
    

    如果整理名称Latin1_General_BINLatin1_General_CS_AS把它改成拉丁美洲将军

    ALTER DATABASE AdventureWorks
    COLLATE Latin1_General_CI_AS ;
    GO
    

    如果数据库已锁定,则执行此操作“无法以独占方式锁定数据库以执行该操作。”. 将数据库更改为单用户

    ALTER DATABASE AdventureWorks SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
    

    并且做

    更改数据库AdventureWorks
    将拉丁裔将军比作;
    去
    

    最终将数据库还原为多用户

    ALTER DATABASE AdventureWorks SET MULTI_USER WITH ROLLBACK IMMEDIATE
    

    可以在数据库属性中更改排序规则。

    enter image description here