首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

难道是SQL2008的Bug么?进来看看

2013-11-26 
难道是SQL2008的Bug么?大虾进来看看我遇到了和这哥们发的帖子一样的问题:http://bbs.csdn.net/topics/3900

难道是SQL2008的Bug么?大虾进来看看
我遇到了和这哥们发的帖子一样的问题:http://bbs.csdn.net/topics/390028807#new_post
问题纠结在于sys.dm_os_wait_stats里的wait_type是否有重复值!
大家不妨在你的DB里运行下面代码验证下~


[解决办法]

SELECT  COUNT(wait_type)
FROM    sys.dm_os_wait_stats ;
SELECT  COUNT(DISTINCT wait_type)
FROM    sys.dm_os_wait_stats ;

SELECT  wait_type
INTO    #t
FROM    sys.dm_os_wait_stats
GROUP BY wait_type

ALTER TABLE [#t] ALTER COLUMN [wait_type] NVARCHAR(50) COLLATE Chinese_PRC_90_CI_AI
 
SELECT  COUNT(wait_type)
FROM    #t ;
SELECT  COUNT(DISTINCT wait_type)
FROM    #t ;

 


 
SELECT DISTINCT wait_type  
FROM    sys.dm_os_wait_stats
WHERE   [wait_type] = 'MISCELLANEOUS'


 
SELECT DISTINCT wait_type COLLATE Chinese_PRC_90_CI_AI
FROM    sys.dm_os_wait_stats
WHERE   [wait_type] = 'MISCELLANEOUS' COLLATE Chinese_PRC_90_CI_AI
ORDER BY wait_type COLLATE Chinese_PRC_90_CI_AI

[解决办法]
SELECT  wait_type 
INTO #tb 
FROM    sys.dm_os_wait_stats
WHERE   [wait_type] = 'MISCELLANEOUS'
--2
SELECT name ,[collation] FROM [tempdb].sys.[syscolumns] AS s WHERE id=OBJECT_ID('tempdb..#tb')


SELECT DISTINCT wait_type FROM #tb
ORDER BY wait_type COLLATE Chinese_PRC_CI_AS
--1
[解决办法]
引用:
@版主,插问您个另外的问题哦,下面的代码是SQL2008的语法,如果在2005上要显示设置怎么弄?
ALTER TABLE dbo.ConsumeInfo SET (LOCK_ESCALATION = TABLE)
锁升级问题,上个月将数据临时转到2005上时候遇到这问题,虽然说SQLServer默认锁升级是TABLE,但是如何如何显示设置啊,如果要设置为其他的还真不知道,2005上
Thanks!


sql server 2005好像没有办法设置这个参数。
[解决办法]
引用:
今天试了试SQL Server 2005 Chinese_PRC_CI_AS 排序规则环境下的状况,不会存在重复值

select count(wait_type) from sys.dm_os_wait_stats
select count(distinct wait_type) from sys.dm_os_wait_stats
-- 都一样 = 202
select wait_type COLLATE Chinese_PRC_90_CI_AI,count(wait_type) as cnt from sys.dm_os_wait_stats
group by wait_type COLLATE Chinese_PRC_90_CI_AI
having count(wait_type)>1
select wait_type ,count(wait_type) as cnt from sys.dm_os_wait_stats
group by wait_type
having count(wait_type)>1
-- 一样,没有重复的
select count(wait_type) from sys.dm_os_wait_stats where wait_type = 'MISCELLANEOUS'
-- 这个值也没有重复

sys.dm_os_wait_stats是一个系统视图,不同版本中其所调用的系统基表是不一样的

再回到SQL Server 2008 R2  Chinese_PRC_CI_AS 的环境下,居然

‘MISCELLANEOUS’在重音敏感的情况下没区别,当重音不敏感时(_AI)有区别
难道是SQL2008的Bug么?进来看看所谓的重音



AI 指定不区分重音,AS 指定区分重音。

如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,  比较还将重音不同的字母视为不等。

区分重音字符和非重音字符。例如,“a”和“?”将被视为不同的字符。

如果未选择此项,在排序时,SQL Server 将把字母的重音形式和非重音形式视为相同。


我查了一下,sql server 2008在这方面也有其他的bug,所以说不好,你发现的问题真是一个bug:

修复: 前缀搜索使用的扩展的字符或重音在 SQL Server 2008年中返回错误的结果
http://support.microsoft.com/kb/973090/zh-cn

热点排行