解决在英文版MSSQL中插入中文乱码的问题

英文版的MSSQL(据说还有Access,但是我没用过)中直接在SQL语句中插入中文最终会显示???

但是在中文版的管理器中插入中文却没有问题。

解决的方法很简单,把类似于

insert into example values ('您好')

这样的SQL语句全部改写成

insert into example values (N'您好')

N表示Unicode,上面的语法仅为示例,具体怎么写看自己习惯。

还有,如果数据库的字段类型不是nchar或者nvarchar的话貌似也是不能插中文,请大家注意。

======================================================================================

修改数据库编码时遇到的:

 

ERROR:The database could not be exclusively locked to perform the operation

2012-03-18 13:29 by Wizardlsw, 95 阅读, 0 评论, 收藏编辑

今天在导数据时遇到几个问题,因为一个是英文操作系统,一个是中文操作系统,两个默认的不一样。我想现在就统一在数据库级别将中文的那个Collation 从 Chinese_PRC_CI_AS 改为 SQL_Latin1_General_CP1_CI_AS(英文系统默认)。

但当我运行:

ALTER DATABASE QinBide COLLATE SQL_Latin1_General_CP1_CI_AS

报出错误如下:

Msg 5030, Level 16, State 2, Line 1 
The database could not be exclusively locked to perform the operation. 
Msg 5072, Level 16, State 1, Line 1 
ALTER DATABASE failed. The default collation of database 'XXXX' cannot be set to Chinese_PRC_CI_AS.

所在环境:

OS:  Windows 7 Professional English X64

DB: Sql Server 2008 R2

 

解决办法:

ALTER DATABASE QinBide SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
go

ALTER DATABASE QinBide COLLATE SQL_Latin1_General_CP1_CI_AS

go

ALTER DATABASE QinBide SET MULTI_USER 
go 

 

引用:

http://www.cnblogs.com/psunny/archive/2010/09/28/1837835.html

http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SQL-Server-2005/Q_23422696.html

 

不过还有另外一个问题,对于原有的数据表字段,对应的Collation也是 Chinese_PRC_CI_AS,但我不知道如何统一一次性修改,由于表的数量不多,我暂时就直接进入各个表进行修改(下回请教公司DBA一下):

列属性 –> Collation –> Restore Default

如下图:

image

 

posted on 2014-04-22 23:48  peter_zhang  阅读(3159)  评论(0编辑  收藏  举报