开发者

SQL Server text, ntext, image data type problem

Microsoft announced that: "ntext, text, and image data types will be removed in a future version of Microsoft SQL Server." And advises to use nvarchar(max), varchar(max), and varbinary(max) instead.

My question: I have a data type bigger than 8 kb. How can I insert this data to 开发者_StackOverflow中文版sql? Which data type will solve my problem?

MSDN document about data types


Any of nvarchar(max), varchar(max), and varbinary(max).

nvarchar(max) and varchar(max) are for textual information (with nvarchar having unicode support).

varbinary(max) is for binary data (images, files etc).

In all cases, it is documented that using MAX indicates that the maximum storage size is 2^31-1 bytes.


If it is text data then either varchar(max) or nvarchar(max) (supports unicode). varchar(max) has a maximum storage size of 2^31-1 bytes (Ref.)

If it is binary data then use varbinary(max).


Don't be confused by the "varchar" bit.

It basically means you can use most functions on varchar(max) like you would on varchar(50)orvarchar(1000)orvarchar(8000)`.

  • The (max) datatypes support 2^32-1 bytes
  • The non-max types support upto 8000 bytes

So you can have varchar(50) or varchar(1000) upto varchar(8000) but for storing longer strings you'd use varchar(max).

The "max" or "50"/"1000"/"8000" bit simply determines internal storage + maximum string length.

There a few minor differences, such as indexing, of course.


You would use either nvarchar(max), varchar(max) or varbinary(max)

If you insert data greater than the 8KB row limitation the data is moved off-row to another page in a ROW_OVERFLOW_DATA allocation unit.

The following MSDN article explains this process in further detail.

I believe the maximum for varchar(max) is 2GB.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜