SQL server中如何更改排序规则

上查到是里面的中文中乱码,求大虾!... 上查到是里面的中文中乱码,求大虾! 展开
 我来答
xiawei123
高粉答主

2019-10-15 · 每个回答都超有意思的
知道答主
回答量:1626
采纳率:100%
帮助的人:43.2万
展开全部

1、首先新建一个数据库,如图为test。

2、可以右键查看该数据库的属性,可以看到他的排序规则等属性,但是无法进行修改。

3、创建一个新表,添加一个name字段char(10)类型,

4、输入数据后,我们会发现汉字会变成??字符。

5、关闭所有已打开的表,首先在数据库上右键,新建查询。

6、输入(其中test是刚建的数据库,自行按实际情况更改):

ALTER DATABASE [test] COLLATE Chinese_PRC_CI_AS

7、执行上面的语句后会将排序规则SQL_Latin1_General_CP1_CI_AS修改成Chinese_PRC_CI_AS,重新建表就可以输入中文了,完成效果图。

普实软件
2017-09-22 · 知道合伙人软件行家
普实软件
知道合伙人软件行家
采纳数:1703 获赞数:7395
普实软件ERP专家

向TA提问 私信TA
展开全部

开始之前,先确认排序规则(或大小写是否敏感)

--查看服务器排序规则(安装时指定的排序规则)  
SELECT SERVERPROPERTY('COLLATION') AS ServerCollation  
,DATABASEPROPERTYEX('tempdb','COLLATION') AS TempdbCollation  
,DATABASEPROPERTYEX(DB_NAME(),'COLLATION') AS CurrentDBCollation  
  
--查看数据库排序规则  
SELECT name, collation_name FROM sys.databases  
  
--当前数据库是否大小写敏感  
SELECT CASE WHEN N'A'=N'a' THEN N'不敏感' ELSE N'敏感' END


此环境实例中:

服务器排序规则为 Chinese_PRC_BIN 

当前数据库排序规则为 Chinese_PRC_CI_AS

若当前数据库创建的所有对象和执行脚本时,如果用到了变量、临时对象等,大小写不一致则出现问题。二进制(_BIN)排序规则是区分大小写的。


安装实例时指定的排序规则,就是 master 数据库的排序规则,同时 model 和 msdb 的排序规则也保持一致,而 tempdb 和用户数据库的排序规则都是参照 model 数据库一样的。

系统数据库是不能直接更改排序规则的,因此只能重建系统数据库,且让系统数据库的排序规则都一致。


重建实例排序规则和系统数据库排序规则:

1、备份系统数据库!必要的,失败了或者以后要使用当前环境时,还可以回退!

2、记住所有数据库及文件路径,保持到 excel 中。如果记得住所有数据库位置的话就不用了。

select DB_NAME(database_id) as name,physical_name from sys.master_files

3、导出服务器配置(sp_configure)到 excel。因为重建系统数据库后配置会被初始化。


4、导出账号信息到 txt。数据库重建,账户信息都会丢失,除了备份也要单独备份账号。(SQL Server 中登录账号与数据库用户迁移)


5、导出链接服务器生产脚本到 txt ,如果有的话。


6、导出代理作业到 txt 。


7、(如果还有其他配置,如审核、邮件配置、策略等,都保存出来,后续再重建)


8、分离所有用户数据库。

select 'ALTER DATABASE ['+name+'] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE'+char(10)+'go'+char(10)  
+'EXEC master.dbo.sp_detach_db @dbname = N'''+name+''''+char(10)+'go'+char(10)  
from sys.databases where name not in('master','model','msdb','tempdb')

9、停止所有数据库相关服务。


10、重建数据库并制定新的排序规则。打开命令行,进入安装目录。

cd D:\Software\en_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_520517  
setup /QUIET /ACTION=REBUILDDATABASE /instancename=mssqlserver /SQLSYSADMINACCOUNTS=服务器账号 /sapwd=密码 /sqlcollation=Chinese_PRC_CI_AS


11、启动 SQL Server 引擎服务,其他暂不启动。


12、创建登录账户(之前导出的脚本)


13、附加所有用户数据库。


14、创建代理作业、链接服务器、更配置等!


完成!~


如果重建系统数据库后,还原 master 数据库,那么服务器排序规则和 master 数据库排序规则都还原和以前一样,所以不能还原,除非恢复到以前的环境。


如果还原 msdb 或 model ,该数据库排序规则也会还原,所以系统数据库备份都不要还原,重建系统数据库之后只能重新配置。



更改用户数据库排序规则

ALTER DATABASE test COLLATE Chinese_PRC_CI_AS


更改数据库排序规则时,需要更改下列内容:


>>  将系统表中的任何 char、varchar、text、nchar、nvarchar 或 ntext 列更改为使用新的排序规则。

>> 将存储过程和用户定义函数的所有现有 char、varchar、text、nchar、nvarchar 或 ntext 参数和标量返回值更改为使用新的排序规则。

>> 将 char、varchar、text、nchar、nvarchar 或 ntext 系统数据类型和基于这些系统数据类型的所有用户定义的数据类型更改为使用新的默认排序规则。

对于数据库内字段定义的排序规则,参考下面的 设置或更改列排序规则。


设置或更改列排序规则:

--示例  
CREATE TABLE dbo.MyTable(  
    PrimaryKey   INT PRIMARY KEY,  
    CharCol      VARCHAR(10) COLLATE French_CI_AS NOT NULL  
);  
GO  
ALTER TABLE dbo.MyTable ALTER COLUMN CharCol VARCHAR(10) COLLATE Latin1_General_CI_AS NOT NULL;  
GO

如果下列其中之一当前正在引用一个列,则无法更改该列的排序规则:

>>  计算列

>>  索引

>>  自动生成或由 CREATE STATISTICS 语句生成的分发统计信息

>>  CHECK 约束

>>  FOREIGN KEY 约束

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泣厝拷02
推荐于2017-10-13
知道答主
回答量:30
采纳率:0%
帮助的人:18.5万
展开全部
将排序规则由默认的SQL_Latin1_General_CP1_CI_AS修改为Chinese_PRC_CI_AS
解决办法:
1、登录服务器打开Microsoft SQL Server Management Studio。

2、在要修改的数据库上单击鼠标右键,并选择“属性”。

3、在弹出的数据库属性窗口中点击“选择页”中的“选项”。

4、将排序规则由默认的SQL_Latin1_General_CP1_CI_AS修改为Chinese_PRC_CI_AS。

5、点击确定就OK。
对于应经是乱码的,估计是没有作用了。
追问

为什么会这样?

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SilentHeartDZ
2015-09-23
知道答主
回答量:16
采纳率:0%
帮助的人:11.6万
展开全部
在sql查询语句的order by后面加上DESC 是降序排列,如果不写默认是升序。吧降序改升序把DESC 换成ASC.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DoramiHe
2017-10-28 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25335 获赞数:59533
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
将排序规则由默认的SQL_Latin1_General_CP1_CI_AS修改为Chinese_PRC_CI_AS
解决办法:
1、登录服务器打开Microsoft SQL Server Management Studio。

2、在要修改的数据库上单击鼠标右键,并选择“属性”。

3、在弹出的数据库属性窗口中点击“选择页”中的“选项”。

4、将排序规则由默认的SQL_Latin1_General_CP1_CI_AS修改为Chinese_PRC_CI_AS。

5、点击确定就OK。
对于应经是乱码的,估计是没有作用了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式