none
SQL Server 2008查询计划中“缺少索引详细信息”显示的中文为乱码 RRS feed

  • 问题

  • 如题,在使用SQL Server 2008的执行计划优化索引的时候,右击选择“缺少索引详细信息”,得到的结果里面中文显示的是乱码,为何?怎么解决,谢谢!
    2012年9月1日 13:12

答案

全部回复

  • What's server collation of sql server? Can you post message you got?
    2012年9月1日 15:01
  • 经常遇到, 只不过因为不影响使用, 所以一直没有理会

    我试了一下, 排序规则: Chinese_PRC_CI_AS

    操作系统(区域也是中文)和 sql server 都是中文, 都会出乱码

    2012年9月2日 0:50
  • -- 创建测试表
    SELECT TOP(100000) 
    	id = IDENTITY(int, 1, 1),
    	object_id = CHECKSUM(NEWID()),
    	value = CONVERT(char(4000), NEWID())
    INTO dbo.tb
    FROM sys.columns a,
    	sys.columns b
    GO
    -- ssms 中, 估计执行计划( CTRL + L )
    -- 会显示缺少索引
    -- 右键-- 显示索引详细信息, 新查询窗口中显示的详细信息注释中主是乱码
    SELECT *
    FROM dbo.tb
    WHERE object_id = 32

    感兴趣的也来试下
    2012年9月2日 0:51
  • 这个问题应该是一个 BUG,

    显示索引详细信息出来的那个注释中的中文, 用的是 UTF-8 编码, 可是 ssms 的查询窗口默认应该是不支持

    或者是支持性很差, 反正用 ssms 去打开一个 UTF-8 格式的文件, 如果文件有文件头标明是 UTF-8, 则正常, 否则就是乱码(记事本没有这个问题)

    估计是这样导致乱码

    2012年9月2日 1:04
  • 另外, 我有点怀疑微软原来的人酝酿主没有怎么去考虑过这个问题

    而新来的人估计有人是喜欢用 UTF-8 的, 这里的乱码是一个问题

    另一个问题是用sql 2005 推出了一个 tablediff 工具 , 它生成的脚本也是 UTF-8 的, 而且没有文件头标识说是 UTF-8 的格式, 导致这个脚本用 ssms 打倒匠话, 也会有乱码(如果包括中文之类)

    所以从这两点看, 我觉得是微软的开发团队脑袋有问题了, 自己的东西不够统一

    2012年9月2日 1:07
  • 微软的开发团队脑袋有问题?

    给我写信: QQ我:点击这里给我发消息

    2012年9月2日 12:26
  • Can report it to MS connect.
    2012年9月2日 14:27
  • 微软的开发团队脑袋有问题?

    给我写信: QQ我:点击这里给我发消息

    I'll not go that far. Sql server is a huge product, normal to have some bugs.
    2012年9月2日 14:29
  • Should I use English to reply?

    I installed the AdventureWorks Database, the OS language is Chinese, the collation of my AdventureWorks is Chinese_PRC_CI_AS, and there is no error message, just the chinese charactors in the content of result are a mess!

    2012年9月3日 0:33
  • This is the query I used:

    USE AdventureWorks
    GO
    SELECT sd.SalesOrderID,sd.ProductID,sd.OrderQty FROM Sales.SalesOrderDetail sd 
    WHERE sd.LineTotal>1000
    GO

    and this is the missed index information

    //*
    SQLQuery5.sql - BRIGHT-PC.AdventureWorks (sa (52)) 涓己灏戠储寮曠殑璇︾粏淇℃伅
    鏌ヨ澶勭悊鍣ㄤ及璁¢噰鐢ㄤ互涓嬬储寮曞彲浠ュ皢鏌ヨ寮€閿€鍑忓皯 86.5213%銆?
    */
    
    /*
    USE [AdventureWorks]
    GO
    CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
    ON [Sales].[SalesOrderDetail] ([LineTotal])
    INCLUDE ([SalesOrderID],[OrderQty],[ProductID])
    GO
    */

    2012年9月3日 0:42
  • I'm sorry, How?
    2012年9月3日 0:44
  • 就是说你输入以下sql语句的时候出现下面的乱码?

    USE [AdventureWorks]
    GO
    CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
    ON [Sales].[SalesOrderDetail] ([LineTotal])
    INCLUDE ([SalesOrderID],[OrderQty],[ProductID])
    GO
    
    BRIGHT-PC.AdventureWorks (sa (52)) 涓己灏戠储寮曠殑璇︾粏淇℃伅
    鏌ヨ澶勭悊鍣ㄤ及璁¢噰鐢ㄤ互涓嬬储寮曞彲浠ュ皢鏌ヨ寮€閿€鍑忓皯 86.5213%銆?
    



    给我写信: QQ我:点击这里给我发消息

    2012年9月3日 0:48
  • Should I use English to reply?

    I installed the AdventureWorks Database, the OS language is Chinese, the collation of my AdventureWorks is Chinese_PRC_CI_AS, and there is no error message, just the chinese charactors in the content of result are a mess!

    This is the query I used:

    USE AdventureWorks
    GO
    SELECT sd.SalesOrderID,sd.ProductID,sd.OrderQty FROM Sales.SalesOrderDetail sd 
    WHERE sd.LineTotal>1000
    GO

    and this is the missed index information

    //*
    SQLQuery5.sql - BRIGHT-PC.AdventureWorks (sa (52)) 涓己灏戠储寮曠殑璇︾粏淇℃伅
    鏌ヨ澶勭悊鍣ㄤ及璁¢噰鐢ㄤ互涓嬬储寮曞彲浠ュ皢鏌ヨ寮€閿€鍑忓皯 86.5213%銆?
    */
    
    /*
    USE [AdventureWorks]
    GO
    CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
    ON [Sales].[SalesOrderDetail] ([LineTotal])
    INCLUDE ([SalesOrderID],[OrderQty],[ProductID])
    GO
    */
    2012年9月3日 2:01
  • 没有没有,语句都可以正常执行,我的语句是

    USE AdventureWorks
    GO
    SELECT sd.SalesOrderID,sd.ProductID,sd.OrderQty FROM Sales.SalesOrderDetail sd
    WHERE sd.LineTotal>1000
    GO

    然后在查询计划里面右键点击,选择建议缺少索引信息的时候显示如下的乱码

    //*
    SQLQuery5
    .sql - BRIGHT-PC.AdventureWorks (sa (52)) 涓己灏戠储寮曠殑璇︾粏淇℃伅
    鏌ヨ澶勭悊鍣ㄤ及璁¢噰鐢ㄤ互涓嬬储寮曞彲浠ュ皢鏌ヨ寮€閿€鍑忓皯 86.5213%銆?
    */

    /*
    USE [AdventureWorks]
    GO
    CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
    ON [Sales].[SalesOrderDetail] ([LineTotal])
    INCLUDE ([SalesOrderID],[OrderQty],[ProductID])
    GO
    */

    2012年9月3日 2:03
  • 2012年9月3日 4:11
  • THANK YOU!
    2012年9月3日 5:00