我刚学数据库,发现好多东西不懂,请大家多指教:
 我在sql server数据库中新建一个列text1,类型为:ntext,但我用sp_help查看,好像只有16k??为什么会这样的??当我写进5000个汉字时,就显示
"服务器: 消息 8152,级别 16,状态 9,行 1
将截断字符串或二进制数据。
语句已终止。
"
就这样了,是不是汉字太多了放不下??
是不是ntext要怎样设置,才能放入大量的汉字的啊??

解决方案 »

  1.   

    text1,类型为:ntext,但我用sp_help查看,好像只有16k??为什么会这样的??当我写进5000个汉字对于text和ntext的数据,数据的长度一般都大于8060字节,因此text与ntext列的数据一般都是单独存放,在表的数据页中只存储指向实际数据存放地址的指针。你输入了5000个字符,类型为ntext,在实际占的数据长度我10000字节,已经超过了8060字节,所以sql会自动截断你所输入的数据。
    16k,应该是16字节吧。这16个字节是存储指针的(指针长度为16字节,为什么是指针,上面说了)。
      

  2.   

    ntext长度可变的 Unicode 数据,最大长度为 2^30 - 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍(以字节为单位)。
    set textsize (number)
    用select @@textsize
    也可以这样create table aa (dd nvarchar(max))看看能插如多少个.我试了可以插好多个.
      

  3.   

    当然text和ntext也允许直接数据数据,当字符串的长度小于@opionvalues所制定的值时,而且数据行中有足够的可用空间,数据会存储在数据行中(所以是允许你直接输入数据的)。否则只存贮执行实际数据存储位置的指针。exec sp_tableoption 'tablenbame','text in row','@valueoption'
    用于设置直接从数据行中提取数据
      

  4.   

    我插进去的是数了一下有六万多个.在Word中有30页.