更改SQL Server 2012 数据库排序规则

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改SQL Server 2012 数据库排序规则相关的知识,希望对你有一定的参考价值。

参考技术A 针对市面上有部份应用系统或者ERP系统对于数据库的排序规则是有要求,若安装数据库时没有留意,采用默认安装后,导致应用打开出现异常或者乱码现象。其实不用再卸载重装,通过如下步骤进行更改,节省大量的时间:

1、先停止需要变更 sqlserver 的服务 : 在 运行命令行中 services.msc 命令,在打开的服界面打到并关闭sql server 的服务;(直接通过 Net stop mssqlserver 语句也可以关闭SQL Server 后台服务)

2、执行命令:(cmd命令行)

F:>Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=administrator /SAPWD=****** /SQLCOLLATION=Chinese_PRC_BIN

参数介绍:

InstanceName : MSSQLSERVER 默认为:MSSQLSERVER

SQLSYSADMINACCOUNTS: administrator 默认为:administrator

StrongPassword : sa账号的密码

CollationName : Chinese_PRC_BIN (根据实际情况需要填写)

F:>setup为安装文件存放路径;

3、等几分钟。出现成功提示

4、执行命令 Net start mssqlserver 启动 SqlServer

5、原有各个数据库会被移出,需要手动进行“附加数据库”数据库操作

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

【中文标题】将 SQL Server 排序规则从区分大小写更改为不区分大小写?【英文标题】:Changing SQL Server collation to case insensitive from case sensitive? 【发布时间】:2011-03-18 19:23:11 【问题描述】:

我最近安装了 SQL Server 2008,并选择了排序规则区分大小写。我想让整个实例(而不是该实例中的数据库)不区分大小写。如果我更改排序规则,它会影响任何现有数据库吗?如果是,以什么方式?

【问题讨论】:

【参考方案1】:

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

见:

MSDN: Setting and changing the server collation How to change database or server collation(在页面中间)

更新:如果要更改数据库的排序规则,可以使用 T-SQL 的这个 sn-p 获取当前排序规则:

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')

【讨论】:

好的,感谢您提供的信息。现在至少我想尝试更改数据库的排序规则以使其不区分大小写。我发现这个'ALTER DATABASE DEV_DB COLLATE [不区分大小写的键]是一样的。但不确定用于不区分大小写的值。任何帮助都是可观的!【参考方案2】:

您可以这样做,但更改会影响插入数据库的新数据。从长远来看,请按照上面的建议进行操作。

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

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

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

【讨论】:

以上是关于更改SQL Server 2012 数据库排序规则的主要内容,如果未能解决你的问题,请参考以下文章

更改 SQL Server Compact 4.0 的排序规则

SQL server中如何更改排序规则

更改 SQL Server 数据库排序规则

数据库排序规则更改问题 (SQL Server 2008)

SQL Server 不区分大小写的排序规则

SQL Server 2005 排序规则问题