在Sql Server CE 3.5和Visual Studio中使用ntext的大小限制问题

时间:2010-09-21 13:33:50

标签: sql-server visual-studio types sql-server-ce

我遇到了SQL Server CE 3.5 SP2的一些奇怪行为。

我有一个有2列的表;一个名为ID的int类型,它是主键,另一个是名为“Value”的ntext类型。 'Value'列应该包含相当长的字符串值。但是,当我尝试存储长度超过4000个字符的字符串时,该值将变为空字符串!

我正在使用Visual Studio 2010服务器资源管理器来执行此操作。

发生了什么事?我认为这个4000字符限制是针对nvarchar的,而ntext的限制是2GB。我忘了某些东西,或者这些限制是否与SQL Server CE不同? MSDN对此并不十分清楚。

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

好吧,在尝试了很多东西并阅读了关于这个主题的许多不明确的帖子之后,结果证明它根本不是一个sql server CE问题,而是Visual Studio的一个问题。

在选项 - >数据库工具 - >查询结果下有一个设置,指定从查询中检索的最大字符数。发生的事情是,在服务器资源管理器表编辑器中输入字符串后,它实际上是在SQL Server CE中保留的,但由于上述设置,visual studio无法显示它。

答案 2 :(得分:1)

数据类型NTEXT SQL Server CE实际上最多可以存储536870911个字符。 这表示物理空间为1073741822字节或大约1千兆字节,或SQL Server将存储的2千兆字节的一半。 但这种能力并不是那么多:观察限制这种能力的其他因素。 首先,数据文件可以存储最多略小于4千兆字节,考虑到所需的空间预留将改变页面。具有该大小的四分之一的单个记录,因此加载将非常耗时,并且可能看起来是空白空间(非空),而事实上它不是。 其次,请注意使用命令选择数据,这可能会无意中将一种类型转换为另一种类型。 例如,将NTEXT转换为NVARCHAR时,例如,对所选字段使用ALIAS时。在转换的字段中高于NVARCHAR容量的E值也可能显示为空格。