易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL Server的 排序规则(collation)冲突和解决方案

什么是排序规则(collation)
关于SQL Server的排序规则,估计大家都不陌生,在创建数据库时我们经常要选择一种排序规则(conllation),一般我们会留意到每一种语言的排序规则都有许多种,比如标准大陆简体中文Chinese_PRC的排序规则就有数十种之多

这些排序规则有什么作用呢?让我们先来看看MS官方的解释:
排序规则指定了表示每个字符的位模式。它还指定了用于排序和比较字符的规则。排序规则具有下面的特征:
语言
区分大小写
区分重音
区分假名
比如在SQL Server 2005中,排序规则名称由两部份构成,比如 Chinese_PRC_CI_AI_WS
前半部份是指本排序规则所支持的字符集,如Chinese_PRC 指针对大陆简体字UNICODE的排序规则。
后半部份即后缀的含义如下:
_BIN               
指定使用向后兼容的二进制排序顺序。
_BIN2     
指定使用 SQL Server 2005 中引入的码位比较语义的二进制排序顺序。
_Stroke  
按笔划排序
_CI(CS)
是否区分大小写,CI不区分,CS区分
_AI(AS)
是否区分重音,AI不区分,AS区分
_KI(KS)
是否区分假名类型,KI不区分,KS区分
_WI(WS)
是否区分全半角,WI不区分,WS区分
既然排序规则如此复杂,那么应用了不同排序规则的列之间默认情况下便不能进行Union、Join、Like等equal操作了,于是便有了排序规则(collation)冲突。
排序规则(collation)冲突
我们知道,SQL Server 从2000 开始,便支持多个排序规则。SQL Server 2000 的数据库可使用除默认排序规则以外的其他排序规则。此外,SQL Server 2000 还支持为列专门制定排序规则。
这样一来,我们在写跨表、跨数据库、跨服务器操作的T-SQL时,如果equal的字段排序规则不同,便会发生排序规则冲突。
比如我们先见两个结构相同的表,但字段的排序规则不同:
-- 1. Create TableA.
CREATE TABLE TagsTableA
(
TagName NVARCHAR(64) COLLATE Chinese_PRC_BIN
)
-- 2. Create TableB.
CREATE TABLE TagsTableB
(
TagName NVARCHAR(64) COLLATE Chinese_PRC_CI_AS
)
当表建好之后执行:
-- 3. Try to join them


相关文档:

MS SQL Server 几个系统表介绍

1.表SYSOBJECTS用于描述数据库中的对象 --表、视图、存储过程等
   说明:该表相关字段的含义如下:
  SYSOBJECTS.name 对象名,如:表名,视图名。
  SYSOBJECTS.id 对象id。
  SYSOBJECTS.type 对象类型(p存储过程,v视图,s系统表,u用户表)。 
  ex:
     ......

SQL触发器语法参考

转自http://www.tzwhx.com/newOperate/Html/3/31/311/16609.html
语法
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
    { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
        [ WITH APPEND ]
   ......

SQL SERVER 2000 "MMC无法创建管理单元

方案一 运行mmc,然后操作,控制台–添加/删除管理单元–添加–找到Microsoft SQL 企业管理器–添加–关闭–确定(注:此处点击添加完后就可以关闭了,不要等待响应,如果你多次点击了添加,后来可以看到n多个sql企业管理器。。。),再回到控制台–选项–控制台模式选择”用 ......

经典SQL语句大全(适合SQL SERVER)


下列语句部分是Mssql语句,不可以在access中使用。
  SQL分类:
  DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
  DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
  DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
  首先,简要介绍基础语句:
  1、说明:创建数据库 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号