如何更改SQL Server 2005使其区分大小写?
时间:2020-03-06 14:45:46 来源:igfitidea点击:
我讨厌数据库中的区分大小写,但是我正在为使用它的客户端开发程序。如何在SQL Server上打开此选项,以确保我在所有查询中都正确?
解决方案
我们必须更改数据库排序规则。我们还需要更改表和列级别的排序规则。相信我们可以在Google上找到脚本。
如果我们在需要区分大小写的表或者列上声明排序规则,则实际上不需要更改整个数据库的排序规则。实际上,我们实际上可以根据需要将其添加到各个操作中。
SELECT name WHERE 'greg' = name COLLATE Latin1_GENERAL_CS_AS
我知道,我们说过要将此方法应用于整个数据库。但我提到这一点是因为在某些托管环境中,我们无法控制此属性,该属性是在创建数据库时设置的。
怎么样:
ALTER DATABASE database_name COLLATE collation_name
有关排序规则选项的列表,请参见BOL,然后选择最适合我们需求的区分大小写的选项(即客户使用的选项)。
显然,在尝试此操作之前,对数据库进行完整备份可能是一个好主意。我从来没有亲自尝试过使用与服务器默认排序规则不同的排序规则的数据库,因此我不知道任何"陷阱"。但是,如果我们有良好的备份并在将其部署到客户端之前在环境中对其进行了测试,则无法想象会有很大的风险。
如果数据库排序规则与实例默认排序规则不同,则在尝试将表与临时表联接时可能会遇到问题。临时表必须整理实例(因为它们是系统对象),因此我们需要在联接中使用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(在此示例中)的排序规则强制为当前DB的排序规则。