【问题标题】:Varchar(max) showing as text in SQL Server Management StudioVarchar(max) 在 SQL Server Management Studio 中显示为文本
【发布时间】:2016-06-28 17:34:43
【问题描述】:

我的数据库中有两列在 SQL Server 2008R2(10.50.4000) 上运行,它们是 varchar(max),但在 SQL Server Management Studio (11.0.5343.0) 中,它们在资源管理器窗口中显示为文本。

当我运行查询时

SELECT DISTINCT 
    J.TICKETID, 
    J.jobNotes,
    J.jobScopeOfWork
FROM 
    sysdba.ALX_JOB J 
JOIN 
    sysdba.ALX_JOBTYPE T ON J.JOBTYPEID = T.ALX_JOBTYPEID 
JOIN 
    sysdba.ALX_JOBSTATUS S ON J.STATUSID = S.ID 
JOIN 
    sysdba.ADDRESS A ON J.ADDRESSID = A.ADDRESSID 
LEFT OUTER JOIN 
    sysdba.ALX_JOB_JOBUSERS ju ON j.TICKETID = ju.ticketId 
WHERE 
    (ju.ALX_USERID = '12345' OR j.UserID = 12345)

我得到了错误

消息 421,第 16 级,状态 1,第 1 行
文本数据类型无法选择为 DISTINCT,因为它不可比较。

消息 421,第 16 级,状态 1,第 1 行
文本数据类型无法选择为 DISTINCT,因为它不可比较。

兼容性选项设置如下

【问题讨论】:

  • 底层 SQL Server 数据库引擎是什么版本? 管理 GUI 的版本无关紧要 - 它是定义哪些数据类型的 引擎有(或没有)。在您的数据库上运行SELECT @@VERSION 并返回报告。还要检查数据库的兼容级别(在对象资源管理器中,右键单击您的数据库 > 属性 > 选项 > 兼容级别)
  • SQL Server 2008R2(10.50.4000)
  • 还有兼容级别??如果它设置为“80”(SQL Server 2000) - 你不能使用Varchar(max) ......
  • 这就是它的设置,一定是它,谢谢

标签: sql sql-server tsql ssms


【解决方案1】:

如果您的数据库引擎在 SQL Server 2000 上运行,或者如果您的数据库兼容级别设置为“80”(SQL Server 2000),那么该数据库不会还不知道varchar(max)

将您的兼容性级别更改为更新的版本!

【讨论】:

    猜你喜欢
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2014-02-18
    • 2013-11-29
    • 1970-01-01
    相关资源
    最近更新 更多