sql server排序规则冲突

问题1:

  

解决:

  数据库的排序规则不同,a表为临时表,用的是tempdb的排序规则,tempdb一般用的实例默认的排序规则。

  而 b表用的是db_tank的排序规则,所以在两个表做字段匹配、计算等操作时会报错排序规则冲突。

set @mdf=(SELECT dsize/1024 FROM #tf_driver a,db_tank..sysfiles b WHERE b.name=‘Db_Tank_Data‘ and a.driver COLLATE chinese_prc_ci_as =LEFT(b.FILENAME,1))
set @ldf=(SELECT dsize/1024 FROM #tf_driver a,db_tank..sysfiles b WHERE b.name=‘Db_Tank_Log‘ and a.driver COLLATE chinese_prc_ci_as =LEFT(b.FILENAME,1))

问题2:

  两个不同版本的sql server ,本地的是2005,链接服务器的是2008R2,排序规则不一致,无法直接比较连接

  

解决:见最后一行

select t1.name,t1.system_type_id,t1.user_type_id,t1.max_length,t2.* from (
select * from test2.sys.columns where object_id=object_id(‘Sys_Users_History‘)
) t1 join (
select t2.name tab_name,t1.name,t1.system_type_id,t1.user_type_id,t1.max_length
from [10.1.4.234].db_tank.sys.columns t1
join [10.1.4.234].db_tank.dbo.sysobjects t2  on t1.object_id=t2.id and t2.name = ‘Sys_Users_History‘
) t2 on t1.name=  t2.name collate Chinese_PRC_90_CI_AI

参考文章:

  修改sql server实例、数据库、表、字段的排序规则

  (3.6)常用知识-字符编码与排序规则

原文地址:https://www.cnblogs.com/gered/p/12703551.html

时间: 04-15

sql server排序规则冲突的相关文章

SQL Server 排序规则的影响

目录 SQL Server 排序规则 影响 效果演示 更改数据库排序规则 服务器级排序规则 数据库级排序规则 列级排序规则 查询时指定规则 建议 使用 Unicode 数据类型 使用二进制排序规则 [========] SQL Server 排序规则 影响 排序规则会作用到 order.where.group 语句中. 默认中文 Windows 系统中安装的数据库使用的排序规则为:Chinese_PRC_CI_AS 选项 描述 区分大小写 (_CS) 区分大写字母和小写字母. 如果选择此项,排序

SQL Server排序规则

在使用数据库的过程中,总会碰到一些特别的需求.有时候需要储存中文字符,区分大小写或者按照中文的比划顺序排序.这就涉及到了对数据库排列规则的选择. 我们一般可以选择数据库名称-->右键属性(Properties)-->功能(optiotion)-->排序方式(Collation)选择. * 由于没有中文版的数据库,中文翻译可能有误.   那这些不同的排序方式究竟有什么区别呢? 排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集. 如: Chinese_PRC_CI_AS 前半部

根据SQL Server排序规则创建顺序GUID

public static class GuidUtil { private static readonly long EpochMilliseconds = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks / 10000L; /// <summary> /// Creates a sequential GUID according to SQL Server's ordering rules. /// </summar

SQL Server 排序规则

1. 查看排序规则 select serverproperty('collation'); 2. 指定列的排序规则 alter table T2 add Y nvarchar(32) collate Chinese_PRC_CI_AS; go --------------------------------------------------- Chinese  --- “体字”    “中文”     的意思.  Chinese ”汉字 prc 指 People’s republic of C

修改SQL Server 排序规则 (未能排它地锁定数据库以执行该操作)

方法一: 重启一下mssqlserver的服务再做. 方法二: use mastergoalter database DBName set single_usergoalter database DBName COLLATE Chinese_PRC_CI_AS goalter database DBName set multi_usergo 原文地址:https://www.cnblogs.com/net5x/p/12430801.html

SQL:无法解决 equal to 操作的排序规则冲突。

更改存储过程的时候,在SQL中出现了 “无法解决 equal to 操作的排序规则冲突”错误,网上搜之,发现是表之间元素创建时排序规则不同(一个是collate Chinese_PRC_CI_AI_WS,一个为COLLATE SQL_Latin1_General_CP1_CI_AS) COLLATE 一个子句,可应用于数据库定义或列定义以定义排序规则,或应用于字符串表达式以应用排序规则投影. 一般解决办法: 直接在报错处的关联字段后加上collate Chinese_PRC_CI_AI_WS就可

[转载]无法解决 equal to 操作中 &quot;Chinese_PRC_CI_AS&quot; 和 &quot;Chinese_PRC_CI_AS_KS_WS&quot; 之间的排序规则冲突

原文链接:http://blog.csdn.net/creathly003/article/details/7331461 一.错误分析: 这个错误是因为排序规则不一致造成的,我们做个测试,比如:create table #t1(name varchar(20) collate Albanian_CI_AI_WS,value int) create table #t2(name varchar(20) collate Chinese_PRC_CI_AI_WS,value int ) 表建好后,执

无法解决 equal to 运算中 &amp;quot;Chinese_PRC_CI_AS&amp;quot; 和 &amp;quot;SQL_Latin1_General_CP1_CI_AS&amp;quot; 之间的排序规则冲突。

什么是排序规则(collation) 关于SQL Server的排序规则,估计大家都不陌生,在创建数据库时我们经常要选择一种排序规则(conllation),一般我们会留意到每一种语言的排序规则都有许多种,比如标准大陆简体中文Chinese_PRC的排序规则就有数十种之多 这些排序规则有什么作用呢?让我们先来看看MS官方的解释: 排序规则指定了表示每个字符的位模式.它还指定了用于排序和比较字符的规则.排序规则具有下面的特征: 语言 区分大小写 区分重音 区分假名 比如在SQL Server 20

SQL Server 排序的时候使 null 值排在最后

最近遇到一个 SQL Server 排序的问题,以前也没了解过,然后这次碰到了. 才发现 SQL Server 排序的问题,在指定的排序列中 null 值会默认排在最前面,因为在 SQL Server 中 null 值默认为最小值. 后来问了一下万能的百度,找到了下面一种比较简单的处理方法. 首先建了一个表插入了一些测试数据. create table UserInfo ( UserInfoID int not null identity(1,1) primary key, User_No in

SQL Server 排序函数 ROW_NUMBER和RANK 用法总结

下面的例子和SQL语句均在SQL Server 2008环境下运行通过,使用SQL Server自带的AdventureWorks数据库. 转载请注明此文原创自 CSDN TJVictor的专栏:http://blog.csdn.net/tjvictor/archive/2009/07/08/4331039.aspx 1.ROW_NUMBER()基本用法: SELECT  SalesOrderID,  CustomerID,  ROW_NUMBER() OVER (ORDER BY SalesO