《SQLServer修改服务器、数据库的排序规则》

目录

《SQLServer修改服务器、数据库的排序规则》

一、修改服务器的排序规则

(一)数据库服务器排序规则介绍

(二)数据库服务器排序规则的设置

2.1:查看数据库服务器排序规则

2.2:修改数据库服务器排序规则

二、修改数据库的排序规则

(一)界面操作方法

(二)报依赖错误解决办法

2.1:方法一(官方)

2.1:方法二(个人)

三、结束语言


一、修改服务器的排序规则

(一)数据库服务器排序规则介绍

1、注意:修改数据库服务器的排序规则相对于修改数据库的排序规则来说是非常麻烦的,因为数据库服务器的排序规则用作与 SQL Server的实例一起安装的所有系统数据库以及任何新创建的用户数据库的默认排序规则(简单的来说就是,数据库服务器排序规则是你在安装数据库的时候设置的)。

2、应仔细选择服务器级排序规则,因为它会影响:

(1)JOIN、ORDER BY 和其他比较文本数据的运算符的排序和比较规则。

(2)系统视图、系统函数和 TempDB 中的对象(例如临时表)中 CHAR、VARCHAR、NCHAR 和 NVARCHAR 列的排序规则。

(3)变量、游标和 GOTO 标签的名称。 如果服务器级排序规则区分大小写,则变量 @pi 和 @PI 被视为不同变量,如果服务器级排序规则不区分大小写,则将这两个变量视为相同变量。

(二)数据库服务器排序规则的设置

2.1:查看数据库服务器排序规则

1、步骤一:首先选择服务器,右键点击链接数据库服务器,点击属性,在服务器属性—>常规—>服务器排序规则。

2、查看服务器的排序规则。

2.2:修改数据库服务器排序规则

1、在查询分析器中,输入SELECT SERVERPROPERTY(‘Collation’)语句 ,获取服务器排序规则、以及当前服务器数据库安装版本。

--获取排序规则

SELECT SERVERPROPERTY('Collation')

--查看安装版本

 SELECT @@VERSION 

  1. 不同版本的数据库,安装路径不一样,请确认当前数据库默认安装版本及默认安装文件目录,请根据自己版本记录数据库默认安装目录。 
     

3、使用dos命令,进入当前数据库安装路径:

  1. 然后关闭SQL Server 服务、运行语句

Setup/QUIET/ACTION=REBUILDDATABASE/instancename=MSSQLSERVER/SQLSYSADMINACCOUNTS=administrator/

sapwd=bwi@1234 /sqlcollation=Chinese_PRC_CS_AS

(3.1)格式说明:

(1)/QUIET或者/Q指定在没有任何用户界面的情况下运行安装程序﹔

(2)/ACTION=REBUILDDATABASE指定安装程序重新创建系统数据库﹔

(3)/instancename=MSSQLSERVER实例名称默认用MSSQLSERVER;

(4)SQLSYSADMINACCOUNTS=administrator指定要添加sysadmin固定服务器角色中的

windows组或单个账户,一般单个账户用Administrator

(5)sapwd=bwi@1234 指定SQL Server sa账户密码,混合模式的必选项

(6)sqlcollation=Chinese_PRC_CS_AS指定服务器排序规则,未指定则为服务器当前排序规

(3.2)注意: accounts 用户使用电脑管理员用户,CollationName 为需要变更的排序格式  

(3.3)修改完成之后,重启数据库,进行2.1步骤,进行查看数据库服务器的排序规则是否修改完成(具体修改命令,参考下截图操作,因为这个是作者本人我自己修改成功过的案例。

二、修改数据库的排序规则

(一)界面操作方法

以下实验将修改数据库db01的排序规则,将SQL_Latin1_General_CP1_CI_AS修改成Chinese_PRC_CI_AS。

1. 打开SSMS(SQL Server Management Studio)图形界面、选中数据库“右键-》属性”

2、找到“选项”然后选择需要的排序规则即可(注意:这可能存在依赖性、非单个锁定等问题、表的排序规则依赖于数据库的排序规则。不能修改

3、如果您正在创建一个新数据库,则右键单击“数据库”,然后单击“新建数据库”。如果您不希望使用默认排序规则,则单击“选项”页,然后从“排序规则”下拉列表中选择某一排序规则。

或者,如果数据库已经存在,则右键单击所需数据库,然后单击“属性”。单击“选项”页,然后从“排序规则”下拉列表中选择某一排序规则。 

4、在完成后,单击 “确定”。

报依赖错误解决办法

2.1:方法一(官方)

设置或更改数据库排序规则 - SQL Server | Microsoft Docs

1、【官方回答】修改完成之后情况

(1)对于已经存在的数据,此操作并不会导致立即重新排序。

(2)如果已经有对象依赖于数据库排序规则,则更改不成功。

2、【官方回答】修改列的排序规则(表的排序规则依赖于数据库的排序规则。不能修改。)

建议:将这个表的数据保存到另一个临时表,重建这个表,然后从临时表将数据导入到新表。

可以通过SSMS修改某一列的排序规则,但是,这项操作实际上还是删除这个表以及相关的约束、触发器,然后重建这个表、约束、索引、触发器。

2.1:方法二(个人)


1、【个人解决办法已实现】注意:在正常修改的情况下,无法修改成功,存在依赖性、非单个用户访问限制的情况,按照一下操作进行:首先第一步设置访问限制(第二种情况使用T-SQL语句下面第一行

--(1)第一个删除所有用户锁、第二个开启用户锁

ALTER DATABASE ORAPS_SCSS_COMPANY_YiPu SET SINGLE_USER;

ALTER DATABASE ORAPS_SCSS_COMPANY_YiPu SET MULTI_USER;

2、第二步:则将存在依赖的表、试图、函数先解决掉(怎么查看是否存在依赖关系、执行下图SQL语句,存在依赖关系的话,会直接报错,并提示表还是试图等
3、怎么操作勒?最好的办法是先将(这里以为例),先将表生成一个脚本,然后删除掉,这样就解决了依赖关系的问题,当修改完排序规则之后,然后再将删除的表补回来就行,执行创建表的SQL语句(如下图生成脚本)。

4、点三步:最后以上两边解决了依赖关系、访问限制的情况下,接下来就是使用T-SQL语句修改排序规则的操作了,具体操作如下图:

--(1)第一个删除所有用户锁、第二个开启用户锁

ALTER DATABASE ORAPS_SCSS_COMPANY_YiPu SET SINGLE_USER;

ALTER DATABASE ORAPS_SCSS_COMPANY_YiPu SET MULTI_USER;

--(2)修改数据库排序规则

USE ORAPS_SCSS_COMPANY_YiPu;  

GO  

ALTER DATABASE ORAPS_SCSS_COMPANY_YiPu  

COLLATE Chinese_PRC_CI_AS ;  

GO  

--(3)查询所有数据库排序规则  

SELECT name, collation_name  

FROM sys.databases  

WHERE name = N'Chinese_PRC_CI_Al';  

GO  

三、结束语言

        最后如果在线的读者你喜欢的话可以留下一个小小的“笔芯”,同时在本文中有什么问题,或者有错误的地方,也可以留言告诉【大大大钢琴(作者)】,我会第一时间纠正。

 学习和成长本就是这样,痛并快乐着,而又是一个漫长的过程,因为有你们的分享和大家的互相监督学习,才能够不断的进步和成长。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐