我最近安装了SQL Server 2008,我选择了排序规则作为区分大小写。我想让它对整个实例不区分大小写(不适用于该实例中的数据库)。如果我更改了排序规则,它是否会影响任何现有数据库?如果是这样的话?
答案 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子句中指定排序规则来覆盖服务器,数据库或列排序规则。