我有一行,其中包含一个定义为varchar(MAX)
的字段。我对字段的极限感到困惑:在一些地方,我看到varchar(最大)的大小限制为8K,而在其他地方,这个限制似乎是2GB。
我想将一个字符串保存到数据库中,它大约是220 K。我使用linq到-sql,当写查询提交到数据库时,行将被写入,而不会产生任何异常。但是,当我在SSMS中打开数据库表时,应该包含长字符串的单元格为空。为什么是这样,如何利用我所读到的2GB限制?
这是linq模型中的属性:
发布于 2014-07-27 17:26:01
所有最大数据类型--VARCHAR(最大)、NVARCHAR(最大)和VARBINARY(最大)--都有2GB的限制。你没什么特别的需要做的。如果不指定MAX
,则VARCHAR和VARBINARY的限制为8000,而NVARCHAR的限制为4000 (因为NVARCHAR是双字节的)。如果你根本没有看到任何数据进入,那么其他的事情正在发生。
您确定该列甚至在INSERT语句中吗?如果你只提交20个字符的测试数据,这会被写入吗?如果您想查看Linq实际上提交了什么SQL,请尝试运行SQL并查看SQL Statement: Statement Ended
事件,我相信。
另外,当您说“长字符串是空的”时,您指的是实际的空字符串还是空字符串?如果它不是NULL,还可以将字段包装在LEN()函数中,以查看在开始时是否存在返回空格,从而将任何非空格字符从视图中推开。意思是,SELECT LEN(stringField), * FROM Table
。另一件事是使用“结果到文本”而不是“结果到网格”(这是一个查询选项)。
编辑:
看到该字段被标记为NULL,是否确实正确地设置了对象的ClientFileJS
属性?空字符串是否可能是由于该属性被初始化为string ClientFileJS = "";
而从未被更新?
https://stackoverflow.com/questions/24983521
复制相似问题