今天在做一个项目时,程序成功向数据库插入一条数据,

插入的是一篇比较大的文章,而且还有很多样式。

Id是int型,Content用的是 ntext类型的

但是当我在手动改数据库Id时出现错误:

错误源:.NET.SqlClient Data Provider
错误信息:将截断字符串或二进制数据。
DBCC执行完毕。如果DBCC输出了错误信息,请与管理员联系。
语句已终止。

出现这个问题的直觉就是插入的数据超过了字段的实际长度。

于是打开数据库修改,发现没有超过的啊?

ntext在我的印象中应该算是最大的了。这样都不行吗?

我又把content数据类型换成nvarchar(MAX),手动更改的时候成功了。

在网上搜索的时候发现nvarchar(MAX) 、ntext是有差别的:

以下转载:http://www.cnblogs.com/dudu/archive/2009/10/17/1585152.html

NTEXT:

默认情况下,NTEXT将文本数据存储在LOB结构中, 在表结构中只存储指针,指针指向该数据在LOB中的存储位置。

NVARCHAR(MAX)

默认情况下,不超过8,000字节的数据直接存储在表结构中,超过的才和NTEXT一样将数据存储在LOB结构中。

NTEXT向NVARCHAR(MAX)的转换:

ALTER TABLE 表名 ALTER COLUMN 字段名 NVARCHAR(MAX) null

执行上面的SQL语句之后,虽然完成了转换,但数据的存储结构并没有改变,还是按照NTEXT的默认存储方式存储在LOB中。

如何实现转换后数据按NVARCHAR(MAX)的方式进行存储呢?只需执行下面的语句:

UPDATE 表名 SET 字段名 = 字段名

比如:表名是Comment,字段名是Content,SQL语句就是: UPDATE Comment SET Content = Content

实测数据:100条数据,耗时706秒。

NTEXT将在以后版本的SQL SERVER中不被支持,微软的文档中建议用NVARCHAR(MAX)取代NTEXT。

ntext, text, and image data types will be removed in a future version of Microsoft SQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead.

意思就是:

  Microsoft SQL Server 的未来版本中,将删除 ntext、 文本和 image 数据类型。 请避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。 使用 nvarchar (max)、 varchar (max) 和 varbinary (max) 来代替。

nvarchar(MAX) 、ntext的差别的更多相关文章

  1. SQL 2005中char、nchar、varchar、ntext and nvarchar(max)的区别

    原文地址 MS SQL大值数据类型varchar(max).nvarchar(max).varbinary(max) 在MS SQL2005及以上的版本中,加入大值数据类型(varchar(max). ...

  2. MS SQL大值数据类型varchar(max)、nvarchar(max)、varbinary(max)

    在MS SQL2005及以上的版本中,加入大值数据类型(varchar(max).nvarchar(max).varbinary(max) ).大值数据类型最多可以存储2^30-1个字节的数据. 这几 ...

  3. SQL Server中VARCHAR(MAX)和NVARCHAR(MAX)使用时要注意的问题(转载)

    在Microsoft SQLServer2005及以上的版本中,对于varchar(n).nvarchar(n)和varbinary(n)有了max的扩展.可以使用如:varchar(max).nva ...

  4. SQL Server中char、varchar、text和nchar、nvarchar、ntext的区别 (转)

    转:http://blog.csdn.net/jackychu/article/details/4183118 http://www.cnblogs.com/jhxk/articles/1633578 ...

  5. Upgrade Image&ntext to varbinarymax&nvarchar(max)

    CREATE PROCEDURE SP_EXEC_WITH_LOG(@I_TICKETNO VARCHAR(10),@I_SQLSTR nvarchar(max))ASBEGIN    DECLARE ...

  6. sql中NVARCHAR(MAX) 性能和占空间分析 varchar(n),nvarchar(n) 长度性能及所占空间分析

    varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. varchar(n)最多能存n个字节,一个中文是两个字节. 所占空间: nvar ...

  7. sql中nvarchar(max)长度测试

    nvarchar(max)长度测试:在使用convert强制类型转化之后 文本长度可以突破8000的上限.并且nvarchar(max)的最大长度可达到2^31以下为验证SQL: Declare @A ...

  8. SQL中char、varchar、nvarchar、ntext的区别(转载)

    char    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符.nvarchar(n ...

  9. Sql server中的 nvarchar(max) 到底有多大?(转载)

    问题: SQL server中的nvarchar(max)最大的长度是4000个字吗? 如果字段的内容超过4000个字时用什么类型呢?text 还是binary?他们的最大长度是多少?比如字段放的是长 ...

随机推荐

  1. 15天入门RT-Thread之第一天

    今天开始学习jiezhi15天的RT-Thread入门系列课程 感谢RT-Thread提供的免费课程,终于可以系统入门RT-Thread ,感兴趣的同学可以关注RT-Thread官方公众号,获取最新的 ...

  2. 报告题目:HAO智能:HI + AI + OI

     报告题目:HAO智能:HI + AI + OI 报告摘要:大数据面向异构自治的多源海量数据, 旨在挖掘数据间复杂且演化的关联.大数据知识工程(BigKE)从大数据的 HACE定理开始, 从大知识建模 ...

  3. 匿名对象序列化为XML

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.X ...

  4. 基于【 springBoot +springCloud+vue 项目】一 || 后端搭建

    缘起 本项目是基于之前学习的一个Dubbo+SSM分布式项目进行升级,基于此项目对前后端分离项目.微服务项目进一步深入学习.之前学习了vue.springBoot.springCloud后,没有进行更 ...

  5. karma mocha angular angular-mock 测试

    describe('工具方法测试', function () { var utilsModule; beforeEach(function () { module('Admin'); // modul ...

  6. adb server is out of date. killing... ADB server didn't ACK * failed to start daemon *……

    问题 使用 adb 命令的时候报错如下: adb server is out of date. killing... ADB server didn't ACK * failed to start d ...

  7. 为新装的Centos 7X更换源,升级VIM失败,待解决

    CentOS 7X使用阿里云CentOS的yum源 1.备份原有repo文件 #cd /etc/yum.repos.d #mv /etc/yum.repos.d/CentOS-Base.repo /e ...

  8. Fortify漏洞之Dynamic Code Evaluation: Code Injection(动态脚本注入)和 Password Management: Hardcoded Password(密码硬编码)

    继续对Fortify的漏洞进行总结,本篇主要针对  Dynamic Code Evaluation: Code Injection(动态脚本注入) 和 Password Management: Har ...

  9. 解决pycharm新建项目后按钮灰色问题

    解决pycharm新建项目后按钮灰色问题 出现过多次该问题了, 在此记录一下 同样适用于导入别人的新项目后无法运行问题 原因一: pycharm没有设置系统解析器 解决方法一: 打开pycharm-& ...

  10. JavaSE字符串日期与时间拼接小列子与JSON小列子

    1.在对象中有个字段为Timestamp类型,需要将数据库的开始日期字段和开始时间字段拼接成一个字段开始字段 private static Timestamp getDateTime(String d ...