2008-09-26 70 views

回答

7

如何:

ALTER DATABASE database_name COLLATE collation_name 

见BOL为list of collation options,并挑选区分大小写的一个最适合您的需要(即一个你的客户端使用)。
显然,它可能是一个好主意,使你的数据库的完整备份您尝试在此之前。我从来没有亲自尝试使用与服务器的默认排序规则不同的排序规则的数据库,所以我不知道任何“陷阱”。但是,如果您有良好的备份并在将其部署到您的客户端之前在您的环境中进行测试,我无法想象涉及很多风险。

0

你必须更改数据库排序规则。您还需要更改表和列级别的排序规则。我相信你可以在那里找到一个脚本,如果你谷歌它。

14

你实际上并不需要更改排序规则对整个数据库,如果你声明它需要区分大小写的表或列。事实上,您可以根据需要将其附加到单个操作中。

 
SELECT name WHERE 'greg' = name COLLATE Latin1_GENERAL_CS_AS 

我知道了,你说过你希望这适用于整个数据库。但我提到这一点是因为在某些托管环境中,您无法控制此数据库创建时设置的属性。

+2

但不这样做,应用LOWER()的列,否则将无法使用索引... – 2008-09-26 03:01:55

1

如果您有具有不同的排序规则,以实例默认情况下,DB,你会遇到问题,当你试着和暂时的加入你的表。临时表有实例的排序规则(因为它们是系统对象),所以你需要使用COLLATE database_default子句中的联接。

select temp.A, table.B 
from #TEMPORARY_TABLE temp inner join table 
on temp.X COLLATE database_default = table.Y 

这会强制temp.X(在此示例中)的归类到当前数据库的归类。