我最近安装了SQL Server 2008,并选择了排序规则作为区分大小写 . 我想让它对整个实例不区分大小写(不适用于该实例中的数据库) . 如果我更改了排序规则,它是否会影响任何现有数据库?如果真是这样,那么是以哪种方式?
您基本上需要再次运行安装以使用新的排序规则重建 master 数据库 . 您无法以任何其他方式更改整个服务器的排序规则 .
master
看到:
MSDN: Setting and changing the server collation
How to change database or server collation(在页面中间)
Update: 如果要更改数据库的排序规则,可以使用此T-SQL片段获取当前排序规则:
SELECT name, collation_name FROM sys.databases WHERE name = 'test2' -- put your database name here
这将产生如下值:
Latin1_General_CI_AS
_CI 表示"case insensitive" - 如果您想要区分大小写,请在其位置使用 _CS :
_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()
您可以使用以下命令查看 server's 当前排序规则:
SELECT SERVERPROPERTY ('Collation')
您可以这样做,但更改将影响插入数据库的新数据 . 从长远来看,按照上面的建议进行操作 .
还有一些技巧可以覆盖排序规则,例如存储过程或函数的参数,别名数据类型,并为变量分配数据库的默认排序规则 . 要更改别名类型的排序规则,必须删除别名并重新创建它 .
您可以使用COLLATE子句覆盖文字字符串的默认排序规则 . 如果未指定排序规则,则会为文字指定数据库默认排序规则 . 您可以使用DATABASEPROPERTYEX查找数据库的当前排序规则 .
您可以通过在SELECT语句的ORDER BY子句中指定排序规则来覆盖服务器,数据库或列排序规则 .
2 回答
您基本上需要再次运行安装以使用新的排序规则重建
master
数据库 . 您无法以任何其他方式更改整个服务器的排序规则 .看到:
MSDN: Setting and changing the server collation
How to change database or server collation(在页面中间)
Update: 如果要更改数据库的排序规则,可以使用此T-SQL片段获取当前排序规则:
这将产生如下值:
_CI
表示"case insensitive" - 如果您想要区分大小写,请在其位置使用_CS
:所以你的T-SQL命令是:
您可以使用以下命令获取服务器上所有可用排序规则的列表:
您可以使用以下命令查看 server's 当前排序规则:
您可以这样做,但更改将影响插入数据库的新数据 . 从长远来看,按照上面的建议进行操作 .
还有一些技巧可以覆盖排序规则,例如存储过程或函数的参数,别名数据类型,并为变量分配数据库的默认排序规则 . 要更改别名类型的排序规则,必须删除别名并重新创建它 .
您可以使用COLLATE子句覆盖文字字符串的默认排序规则 . 如果未指定排序规则,则会为文字指定数据库默认排序规则 . 您可以使用DATABASEPROPERTYEX查找数据库的当前排序规则 .
您可以通过在SELECT语句的ORDER BY子句中指定排序规则来覆盖服务器,数据库或列排序规则 .