将SQL Server排序规则更改为区分大小写不区分大小写?

时间:2010-07-21 05:01:59

标签: sql-server sql-server-2008 collation

我最近安装了SQL Server 2008,我选择了排序规则作为区分大小写。我想让它对整个实例不区分大小写(不适用于该实例中的数据库)。如果我更改了排序规则,它是否会影响任何现有数据库?如果是这样的话?

2 个答案:

答案 0 :(得分:58)

您基本上需要再次运行安装以使用新的排序规则重建master数据库。您无法以任何其他方式更改整个服务器的排序规则。

请参阅:

更新:如果要更改数据库的排序规则,可以使用此T-SQL片段获取当前排序规则:

SELECT name, collation_name 
FROM sys.databases
WHERE name = 'test2'   -- put your database name here

这将产生如下值:

Latin1_General_CI_AS

_CI表示“不区分大小写” - 如果您想要区分大小写,请在其位置使用_CS

Latin1_General_CS_AS

所以你的T-SQL命令是:

ALTER DATABASE test2 -- put your database name here
   COLLATE Latin1_General_CS_AS   -- replace with whatever collation you need

您可以使用以下命令获取服务器上所有可用排序规则的列表:

SELECT * FROM ::fn_helpcollations()

您可以使用以下方式查看 服务器的 当前排序规则:

SELECT SERVERPROPERTY ('Collation')

答案 1 :(得分:2)

您可以这样做,但更改将影响插入数据库的新数据。从长远来看,请遵循以上建议。

还有一些技巧可以覆盖排序规则,例如存储过程或函数的参数,别名数据类型,并为变量分配数据库的默认排序规则。要更改别名类型的排序规则,必须删除别名并重新创建它。

您可以使用COLLATE子句覆盖文字字符串的默认排序规则。如果未指定排序规则,则会为文字指定数据库默认排序规则。您可以使用DATABASEPROPERTYEX查找数据库的当前排序规则。

您可以通过在SELECT语句的ORDER BY子句中指定排序规则来覆盖服务器,数据库或列排序规则。

相关问题