字符串或二进制数据将被截断.SqlDataReader

本文关键字:SqlDataReader 二进制 数据 字符串 | 更新日期: 2023-09-27 18:14:14

我有一个选择语句的问题。它可以在SQL Server中工作,但在c#

中使用时,它会在标题中显示错误。

SO My SQL Statement看起来像这样

  declare @312341v1Whenaddakeylength128charatsendingreportonP varchar(max)= 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec faucibus nulla ut lorem ornare, sit amet ullamcorper diam laoreet. Proin convallis est ut euismod rhoncus. Donec in magna eleifend, dictum neque non, pellentesque diam. Aliquam faucibus fringilla ex, vitae posuere lectus rhoncus congue. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam mollis vel enim at consequat. Integer porta feugiat sem, a condimentum felis hendrerit ac. Quisque lobortis placerat sodales. Nam et nunc nulla.
Pellentesque vel risus vel sem pellentesque feugiat. Ut sodales odio sollicitudin, consequat nisi quis, lobortis ex. Donec fermentum ante massa, luctus auctor sapien consectetur ac. Phasellus auctor nunc lorem, ultricies sollicitudin metus placerat ut. Proin non viverra erat. Maecenas malesuada orci mi. Curabitur vel dolor a ex ultrices posuere. Sed id quam porta lorem venenatis auctor sed a dolor. Suspendisse lobortis mauris blandit lacinia semper. Nunc nisl orci, porta nec maximus id, imperdiet vitae purus. Aenean a elit id augue suscipit pretium vel nec risus. Suspendisse potenti. Pellentesque facilisis mauris eu orci sagittis semper. Suspendisse at placerat mauris.
Sed vulputate est quis justo mattis convallis. Aenean tempor auctor arcu eget suscipit. Maecenas ac vehicula neque, ut placerat lorem. Integer felis lectus, varius sit amet neque auctor, ultrices interdum mauris. Ut fringilla, sapien id auctor blandit, enim diam tempus neque, eu tempus libero nibh a purus. Maecenas bibendum ligula ut malesuada placerat. Morbi egestas commodo velit eu egestas. Phasellus sed iaculis justo. Sed ipsum nisl, molestie ac luctus sit amet, fringilla luctus felis. Nullam vitae lorem in metus blandit maximus.
Nunc hendrerit odio quis felis mattis bibendum sed ut neque. Praesent blandit nunc in elit semper feugiat a a mi. Pellentesque a cursus nisi. Etiam maximus tristique elementum. Praesent finibus blandit sagittis. Morbi mollis leo justo, ut malesuada mauris ullamcorper sit amet. Ut eu bibendum justo. Integer tempus elit erat, non egestas urna tristique in. Quisque et massa nec felis rutrum posuere ut vitae sapien. Ut semper euismod mauris ac blandit. Vivamus dignissim est sit amet maximus volutpat. Cras fermentum massa nunc, non tincidunt erat rutrum vitae.
Ut commodo ullamcorper erat, eget sollicitudin nisl lacinia sed. Phasellus fermentum felis ac urna elementum, et bibendum nunc sagittis. Curabitur vestibulum tristique ante ut consequat. Pellentesque egestas ex sit amet mauris ultrices, malesuada bibendum est finibus. Curabitur ac feugiat arcu. Nam auctor pulvinar molestie. Quisque feugiat, nulla non rhoncus blandit, orci leo interdum eros, in imperdiet libero ante nec mauris. Morbi id aliquam purus, quis posuere magna. Nunc vel sem eget ante rhoncus imperdiet eu et leo.
Quisque ac malesuada est. Maecenas a dolor vitae turpis ultricies vestibulum. Quisque tincidunt lorem volutpat, eleifend nulla vel, dictum lorem. Nullam id imperdiet nunc, posuere hendrerit nulla. In volutpat, augue ut posuere ultricies, lectus sapien condimentum lectus, in consequat nibh nisi quis dolor. Cras rhoncus mi pellentesque massa dignissim convallis. Vivamus eu eleifend felis, vel eleifend dui. Etiam vitae sapien nunc. Integer est quam, sodales quis dolor vel, commodo sodales urna. Sed ac sapien ligula. Cras tempor felis vitae justo ullamcorper, ut venenatis risus commodo. Fusce lobortis egestas commodo.
Sed at libero quis mauris ultricies aliquam vel feugiat lorem. Donec pharetra vitae libero id placerat. Aliquam suscipit porta urna, a hendrerit mauris ullamcorper sit amet. Phasellus mollis diam sagittis metus dapibus, ac porta tortor euismod. Nam quam lacus, dignissim quis feugiat ut, rhoncus sit amet augue. Vestibulum molestie egestas venenatis. Ut a nulla in augue pretium tincidunt quis eget ex. Phasellus blandit bibendum neque. Sed laoreet ullamcorper justo. Morbi non sodales justo. Integer dignissim varius tincidunt. Nulla sagittis, sem ut tempor porta, lorem leo elementum sapien, sed sollicitudin diam nisl sed massa. Etiam egestas mauris nec bibendum pulvinar. Etiam sed nisl cursus, luctus augue non, pharetra enim. Suspendisse ac magna nisl. Mauris tempus eu mauris malesuada consectetur.
Duis tincidunt vitae diam et mattis. Donec laoreet euismod aliquam. Donec at efficitur sapien, vel lacinia ante. Proin vehicula ut quam vitae faucibus. Nam venenatis est sit amet tortor varius, quis sollicitudin lectus placerat. Donec vel aliquet tellus. Integer pellentesque leo sit amet lorem luctus, eu tempor nisl tincidunt.
Suspendisse turpis felis, euismod at auctor vel, hendrerit auctor sapien. Mauris finibus interdum vestibulum. Donec quis dolor ac orci commodo efficitur. Nullam in porttitor ipsum, a commodo mauris. Proin et blandit erat. Mauris posuere lacus non leo pulvinar, dignissim aliquam augue vulputate. Nullam et consequat augue, ac ultricies nibh.
Morbi vestibulum, orci eu molestie convallis, ligula felis convallis lectus, in congue tellus augue et purus. Nulla non dui urna. Aliquam at mattis mauris. Phasellus eget congue urna. Phasellus sollicitudin tellus leo, vel efficitur magna condimentum nec. Donec venenatis feugiat blandit. Quisque erat elit, feugiat nec orci volutpat, semper maximus turpis. Nulla rutrum molestie dolor sed varius. Morbi scelerisque quam dui, ac blandit leo rutrum nec. Vivamus vel maximus orci, at malesuada purus. Cras gravida vulputate augue, sit amet dictum erat aliquet cursus. Ut purus nibh, aliquam vel tincidunt a, vehicula sit amet nulla. Suspendisse ultrices, tortor eget tristique rhoncus, mi elit feugiat ante, ut elementum lacus quam a dolor. Vestibulum nibh justo, dapibus vitae massa vel, pellentesque iaculis tellus.
Fusce eu volutpat leo. Nunc luctus quis lorem nec mattis. Pellentesque eget sagittis sem. Curabitur mattis ligula ut iaculis accumsan. Aliquam ut enim ac magna hendrerit porttitor. In nec lorem non neque euismod luctus. Praesent euismod purus nec leo egestas lobortis.
Nunc eros ipsum, tincidunt a purus at, maximus lobortis ipsum. Sed condimentum, turpis non commodo ornare, ligula purus gravida sapien, in interdum elit risus sit amet nibh. Curabitur mattis cursus ligula. In ut lectus et massa iaculis dignissim. Interdum et malesuada fames ac sed.'

  SELECT * , CASE  WHEN Column1 LIKE '%' + @312341v1Whenaddakeylength128charatsendingreportonP+ '%' 
  THEN 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec faucibus nulla ut lorem ornare, sit amet ullamcorper diam laoreet. Proin convallis est ut euismod rhoncus. Donec in magna eleifend, dictum neque non, pellentesque diam. Aliquam faucibus fringilla ex, vitae posuere lectus rhoncus congue. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam mollis vel enim at consequat. Integer porta feugiat sem, a condimentum felis hendrerit ac. Quisque lobortis placerat sodales. Nam et nunc nulla.
Pellentesque vel risus vel sem pellentesque feugiat. Ut sodales odio sollicitudin, consequat nisi quis, lobortis ex. Donec fermentum ante massa, luctus auctor sapien consectetur ac. Phasellus auctor nunc lorem, ultricies sollicitudin metus placerat ut. Proin non viverra erat. Maecenas malesuada orci mi. Curabitur vel dolor a ex ultrices posuere. Sed id quam porta lorem venenatis auctor sed a dolor. Suspendisse lobortis mauris blandit lacinia semper. Nunc nisl orci, porta nec maximus id, imperdiet vitae purus. Aenean a elit id augue suscipit pretium vel nec risus. Suspendisse potenti. Pellentesque facilisis mauris eu orci sagittis semper. Suspendisse at placerat mauris.
Sed vulputate est quis justo mattis convallis. Aenean tempor auctor arcu eget suscipit. Maecenas ac vehicula neque, ut placerat lorem. Integer felis lectus, varius sit amet neque auctor, ultrices interdum mauris. Ut fringilla, sapien id auctor blandit, enim diam tempus neque, eu tempus libero nibh a purus. Maecenas bibendum ligula ut malesuada placerat. Morbi egestas commodo velit eu egestas. Phasellus sed iaculis justo. Sed ipsum nisl, molestie ac luctus sit amet, fringilla luctus felis. Nullam vitae lorem in metus blandit maximus.
Nunc hendrerit odio quis felis mattis bibendum sed ut neque. Praesent blandit nunc in elit semper feugiat a a mi. Pellentesque a cursus nisi. Etiam maximus tristique elementum. Praesent finibus blandit sagittis. Morbi mollis leo justo, ut malesuada mauris ullamcorper sit amet. Ut eu bibendum justo. Integer tempus elit erat, non egestas urna tristique in. Quisque et massa nec felis rutrum posuere ut vitae sapien. Ut semper euismod mauris ac blandit. Vivamus dignissim est sit amet maximus volutpat. Cras fermentum massa nunc, non tincidunt erat rutrum vitae.
Ut commodo ullamcorper erat, eget sollicitudin nisl lacinia sed. Phasellus fermentum felis ac urna elementum, et bibendum nunc sagittis. Curabitur vestibulum tristique ante ut consequat. Pellentesque egestas ex sit amet mauris ultrices, malesuada bibendum est finibus. Curabitur ac feugiat arcu. Nam auctor pulvinar molestie. Quisque feugiat, nulla non rhoncus blandit, orci leo interdum eros, in imperdiet libero ante nec mauris. Morbi id aliquam purus, quis posuere magna. Nunc vel sem eget ante rhoncus imperdiet eu et leo.
Quisque ac malesuada est. Maecenas a dolor vitae turpis ultricies vestibulum. Quisque tincidunt lorem volutpat, eleifend nulla vel, dictum lorem. Nullam id imperdiet nunc, posuere hendrerit nulla. In volutpat, augue ut posuere ultricies, lectus sapien condimentum lectus, in consequat nibh nisi quis dolor. Cras rhoncus mi pellentesque massa dignissim convallis. Vivamus eu eleifend felis, vel eleifend dui. Etiam vitae sapien nunc. Integer est quam, sodales quis dolor vel, commodo sodales urna. Sed ac sapien ligula. Cras tempor felis vitae justo ullamcorper, ut venenatis risus commodo. Fusce lobortis egestas commodo.
Sed at libero quis mauris ultricies aliquam vel feugiat lorem. Donec pharetra vitae libero id placerat. Aliquam suscipit porta urna, a hendrerit mauris ullamcorper sit amet. Phasellus mollis diam sagittis metus dapibus, ac porta tortor euismod. Nam quam lacus, dignissim quis feugiat ut, rhoncus sit amet augue. Vestibulum molestie egestas venenatis. Ut a nulla in augue pretium tincidunt quis eget ex. Phasellus blandit bibendum neque. Sed laoreet ullamcorper justo. Morbi non sodales justo. Integer dignissim varius tincidunt. Nulla sagittis, sem ut tempor porta, lorem leo elementum sapien, sed sollicitudin diam nisl sed massa. Etiam egestas mauris nec bibendum pulvinar. Etiam sed nisl cursus, luctus augue non, pharetra enim. Suspendisse ac magna nisl. Mauris tempus eu mauris malesuada consectetur.
Duis tincidunt vitae diam et mattis. Donec laoreet euismod aliquam. Donec at efficitur sapien, vel lacinia ante. Proin vehicula ut quam vitae faucibus. Nam venenatis est sit amet tortor varius, quis sollicitudin lectus placerat. Donec vel aliquet tellus. Integer pellentesque leo sit amet lorem luctus, eu tempor nisl tincidunt.
Suspendisse turpis felis, euismod at auctor vel, hendrerit auctor sapien. Mauris finibus interdum vestibulum. Donec quis dolor ac orci commodo efficitur. Nullam in porttitor ipsum, a commodo mauris. Proin et blandit erat. Mauris posuere lacus non leo pulvinar, dignissim aliquam augue vulputate. Nullam et consequat augue, ac ultricies nibh.
Morbi vestibulum, orci eu molestie convallis, ligula felis convallis lectus, in congue tellus augue et purus. Nulla non dui urna. Aliquam at mattis mauris. Phasellus eget congue urna. Phasellus sollicitudin tellus leo, vel efficitur magna condimentum nec. Donec venenatis feugiat blandit. Quisque erat elit, feugiat nec orci volutpat, semper maximus turpis. Nulla rutrum molestie dolor sed varius. Morbi scelerisque quam dui, ac blandit leo rutrum nec. Vivamus vel maximus orci, at malesuada purus. Cras gravida vulputate augue, sit amet dictum erat aliquet cursus. Ut purus nibh, aliquam vel tincidunt a, vehicula sit amet nulla. Suspendisse ultrices, tortor eget tristique rhoncus, mi elit feugiat ante, ut elementum lacus quam a dolor. Vestibulum nibh justo, dapibus vitae massa vel, pellentesque iaculis tellus.
Fusce eu volutpat leo. Nunc luctus quis lorem nec mattis. Pellentesque eget sagittis sem. Curabitur mattis ligula ut iaculis accumsan. Aliquam ut enim ac magna hendrerit porttitor. In nec lorem non neque euismod luctus. Praesent euismod purus nec leo egestas lobortis.
Nunc eros ipsum, tincidunt a purus at, maximus lobortis ipsum. Sed condimentum, turpis non commodo ornare, ligula purus gravida sapien, in interdum elit risus sit amet nibh. Curabitur mattis cursus ligula. In ut lectus et massa iaculis dignissim. Interdum et malesuada fames ac sed.' 
  END as ErrorCode FROM Table rpmsp WHERE   Column1 LIKE '%' + @312341v1Whenaddakeylength128charatsendingreportonP+ '%'  

所以这个语句在SQL中工作得很好,它返回0行,但不抛出异常。

在c#中

 SqlDataReader dataReader = sqlCommand.ExecuteReader();
            try{ dataReader.Read(); }
            catch (Exception ex) {
                var x = 1;
            }

这会在dataReader.Read()上抛出异常;String or binary data would be truncated例外。我不知道为什么,因为我没有插入,它只是一个动态选择。

有什么想法吗?

字符串或二进制数据将被截断.SqlDataReader

我们构建了一个进程,将我们的一些表导出到外部DB服务器。我们使用返回XML格式数据的视图。

select col1, col2, col3 from table for xml auto

我检测到在c#中,(我们使用存储过程和. executenonquery()),它为每个xml文件返回不止一行,我认为它使用了2K数据包。

然后,依次读取所有行并使用StringBuilder,重新构建文本。

StringBuilder xml_text = new StringBuilder();
foreach(DataRow row in table.Rows)
{
    xml_text.Append(row[0].ToString());
}

这不是c#的问题。从错误消息中可以看出,这是一个SQL。根本问题是SQL Server不一致地转换字符串的数据类型/大小。

在SQL中为所有字符串添加显式强制转换为varchar(max)