我的数据库中有些字段是text类型的,最经发现存放某些特殊字符时,出现了乱码,后来将其类型改为ntext就ok了。
但是我在写脚本时出了问题。我的脚本是这样的ALTER table dbo.XXTablealter column XX ntext 出错的消息:消息 4927,级别 16,状态 1,第 1 行
无法将列 'XX' 的数据类型更改为 ntext。 
麻烦大家看一下,怎么在写这个脚本。
谢谢

解决方案 »

  1.   

    --2000中不能更改text列.请看说明: 
    ALTER COLUMN 指定要更改给定列。如果兼容级别是 65 或小于 65,将不允许使用 ALTER COLUMN。有关更多信息,请参见 sp_dbcmptlevel。 要更改的列不能是: 数据类型为 text、image、ntext 或 timestamp 的列。 
    表的 ROWGUIDCOL 列。 
    计算列或用于计算列中的列。 
    被复制列。 
    用在索引中的列,除非该列数据类型是 varchar、nvarchar 或 varbinary,数据类型没有更改,而且新列大小等于或者大于旧列大小。 
    用在由 CREATE STATISTICS 语句创建的统计中的列。首先用 DROP STATISTICS 语句删除统计。由查询优化器自动生成的统计会由 ALTER COLUMN 自动除去。 
    用在 PRIMARY KEY 或 [FOREIGN KEY] REFERENCES 约束中的列。 
    用在 CHECK 或 UNIQUE 约束中的列,除非用在 CHECK 或 UNIQUE 约束中的可变长度列的长度允许更改。 
    有相关联的默认值的列,除非在不更改数据类型的情况下允许更改列的长度、精度或小数位数。 
    有些数据类型的更改可能导致数据的更改。例如,将数据类型为 nchar 或 nvarchar 的列更改为 char 或 varchar 类型,将导致扩展字符的转换。有关更多信息,请参见 CAST 和 CONVERT。降低列的精度和小数位数可能导致数据截断。 
      

  2.   

    2005可以直接改
    樓主直接增加一列為NTEXT類型,然後將數據複製過去,刪除TEXT列
      

  3.   

    create table T(Col ntext)insert t select 'aa'alter table t add  col2 textupdate t set col2=col
      

  4.   

    谢谢大家,看来只能用roy_88 的方法了