3

我有一个SqlDataSource和一个<asp:ListView>设置来处理另一个表单上的评论,带有以下文本框:

<asp:TextBox ID="CommentTextBox" runat="server" Text='<%# Bind("Comment") %>' Width="400px" Height="125px" TextMode="MultiLine" />

数据源具有以下内容InsertCommandasp:Parameter在其上设置:

InsertCommand="INSERT INTO [tblSLS_SpecComments] ([SpecID], [Author], [Comment]) VALUES (@SpecID, @Author, @Comment)" 
  <asp:Parameter Name="SpecID" Type="Int32" />
  <asp:Parameter Name="Author" Type="String" />
  <asp:Parameter Name="Comment" Type="String" />

当我尝试插入更长的评论(例如 500 'f's)时,我收到一个错误:

字符串或二进制数据将被截断。
该语句已终止。

我插入的列是 datatype nvarchar(max),所以它应该能够容纳一本书的字符,这比我处理的要少得多。

关于发生了什么的任何线索?

4

4 回答 4

1

您可以检查您的表是否对另一个数据表有任何触发器,并且触发器尝试将值插入/更新到较小的字段中。

于 2014-09-02T14:36:53.613 回答
0

Nvarchar(Max)不能成为该错误的根源。检查这个问题检查其他字段,并尽可能Author使用MaxLenght属性。texbox

于 2013-07-19T11:22:33.053 回答
0

当我尝试在 nvarchar(max) 字段上插入来自设计器的长值(编辑前 200 行...)时,它发生在我身上。

当我从查询窗口手动运行更新时,它起作用了。

于 2016-11-20T13:46:48.673 回答
0

我在 SQL Server 2008 中遇到了一个奇怪的情况,即使查询根本没有尝试插入任何内容(例如 Where 1 <> 1),我也无法插入到 nvarchar(max) 列中。唯一对我有用的解决方案是sp_updatestats。显然,服务器认为源列值可能大于 nvarchar(max)(实际上它是 nvarchar(20))

于 2020-05-21T15:32:19.030 回答