我刚刚安装了 SQL Server 2008 并导入了 AdventureWorksDatabase(对于 SQL 2005,对于 2008 不起作用)。
当我搜索任何表、 View 等时,它现在强制区分大小写 因此,Person.contact 表在写入时会抛出无效列名的错误,但是当写入 Person.Contact 时,它会显示所有行。
另外,智能感知也不太有效。
最佳答案
区分大小写由数据库使用的排序规则控制 - 通过查询系统目录 View 来检查这一点:
select name, collation_name
from sys.databases
排序规则名称类似于:Latin1_General_CI_AS
_CI_
部分告诉我这是一个不区分大小写的排序规则。如果您看到 _CS_
,则它是区分大小写的排序规则。
您可以使用以下方法更改数据库的默认排序规则:
ALTER DATABASE AdventureWorks COLLATE .......
并在此处选择任何有效的排序规则 - 使用带有 _CI_
的排序规则来获取不区分大小写的排序规则。
问题是:即使您在数据库级别更改排序规则,某些表可能仍然具有在创建表时定义了特定排序规则的单个列。您也可以更改所有这些,但这将是一项更大的任务。请参阅this article了解更多信息和用于检查并可能更改表中各个列的脚本。
智能感知可能无法正常工作的原因是数据库对象本身的大小写敏感性是由服务器排序规则控制的 - 这可能又与任何数据库默认值不同。
要了解服务器的排序规则是什么,请使用:
SELECT SERVERPROPERTY('Collation')
更改服务器的系统排序规则是一个相当困惑的过程,需要您使用原始的 setup.exe
作为 explained here .
关于sql-server - 如何删除 SQL Server 2008 中的区分大小写检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3192512/